System and method for automatic software retrieval on a peer-to-peer network

ABSTRACT

Systems and methods are disclosed for a distributed computing infrastructure on a computer network comprising a plurality of computers. The distributed computing infrastructure (DCI) provides a software platform for creating, running, and managing distributed applications. DCI may include XML-capable software applications on a peer-to-peer network. DCI may include small, network-unaware applications called peerlets. DCI may include a system and method for creating complex distributed applications using pre-complied binaries. DCI may include a capability for multiple, independent collaborative sessions for distributed collaborative applications (e.g., chat, instant messaging, shared whiteboard, etc.). DCI may include systems and methods for reducing interactions between users and applications to archivable form and then playing back the interactions. DCI may include a system and method for automatic software retrieval on a peer-to-peer network.

PRIORITY CLAIM

[0001] This application claims benefit of priority of provisionalapplication Serial No. 60/411,066 titled “Distributed ComputingInfrastructure” filed on Sep. 16, 2002, whose inventors are Amir Husain,Todd Enright, and Barry Thornton.

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The present invention relates generally to computer systems andspecifically to distributed computing and storage mechanisms onnetworked computer systems.

[0004] 2. Description of the Related Art

[0005] Many commercial businesses and enterprises make extensive use ofpersonal computers (PCs) in their daily operations. Typically, each userof a PC in the enterprise has a networked PC at his/her desk or workarea. As the number of networked computer systems utilized in anenterprise increases, the management of resources in the network maybecome increasingly complex and expensive. Some of the manageabilityissues involved in maintaining a large number of networked computersystems may include ease of installation and deployment, the topologyand physical logistics of the network, asset management, scalability(the cost and effort involved in increasing the number of units),troubleshooting network or unit problems, support costs, softwaretracking and management, as well as the simple issue of physical space,be it floor space or room on the desktop, as well as security issuesregarding physical assets, information protection, software control, andcomputer virus issues.

[0006] A typical computer system has I/O access to one or more volumeson a storage device such as a hard drive. A volume generally includes anamount of free (unused) storage space which varies over time. When thenumber of computers and respective volumes in the networked systembecomes very large, the total amount of unused storage may becomesignificant.

[0007] Multiple PCs that are centralized and closely coupled are oftensuitable for performing distributed computing tasks. Traditionally,tasks that are performed across multiple computers tend to includeprocessor-intensive algorithms and tasks that can be easily broken intomanageable chunks. These programs must typically be re-written from theground up to take advantage of multiple PCs and shared resources.Existing software, including applications that traditionally have notbeen performed in a distributed manner, are often not configured to takeadvantage of distributed computing possibilities.

[0008] Therefore, an improved system is desired for configuringnetworked computer systems to use network storage resources in anefficient manner.

SUMMARY OF THE INVENTION

[0009] Various embodiments of a system and method for managing datastorage for a plurality of computer systems are presented. In oneembodiment, the computer systems may be configured to access virtualnetwork attached storage (referred to herein as a shared storagevolume). The computer systems may include a first computer, having afirst processor and a first storage medium coupled to the firstprocessor, and a peripheral device, e.g., a keyboard, monitor, mouse, orother type of peripheral device. The computer systems may furtherinclude a second computer having a second processor and a second storagemedium coupled to the second processor. in one embodiment, the firstcomputer and the second computer may each be configured on a respectivecomputer blade, also referred to as a “computer on a card.” Acommunication link, e.g., a bus, may couple the first computer to thesecond computer. A peripheral switch may be coupled to the firstcomputer, the second computer, and the peripheral device. The peripheralswitch may be configured to route signals between the peripheral deviceand the first computer.

[0010] In one embodiment, each computer may have some file serverfunctionality. The file server functionality may include some I/Ofunctionality, and may also include functionality for negotiating filewrite and read protocols. Communicating with the storage medium on thecomputer may be analogous to communicating with a standard file serverattached memory. The computer may negotiate information writes similarto a file server, and order and prioritize transactions. In oneembodiment, the computer may also implement striping analogous to thatused by RAID (Redundant Array of Inexpensive Disks).

[0011] The hardware platform described above, due to its denseconfiguration and increased manageability, may provide a highlyeffective clustering solution. In one embodiment, a DistributedComputing Infrastructure (DCI) adds to these underlying capabilities byproviding a software platform for creating, running, and managingdistributed applications. In one embodiment, the DCI software solutionincludes a framework that provides a variety of management anddeployment functions for creating and running large-scale distributedapplications. In one embodiment, DCI may be implemented using aJava-based framework. The infrastructure is not dependent on thepresence of a server and therefore eliminates a single-point bottleneckthat often slows performance of distributed applications. The DCIsolution is primarily designed to make it easy for domain specialists(biologists, mathematicians, etc.) to re-leverage existing code modules,scripts, and applications and adapt them to make use of the immensepower of cluster solutions.

[0012] In one embodiment, DCI may include XML-capable softwareapplications on a peer-to-peer network. A source application on a firstcomputer system may generate a message intended for a second computersystem. Using DCI, the message may be translated from an original,internal, or other native format to a portable format (e.g., XML) on thefirst computer system, thereby generating a portable (e.g., XML)message. The portable message may include metadata which compriseidentifying characteristics of the source application. The portablemessage may be sent from the first computer system to a second computersystem using peer-to-peer message passing between the first computersystem, the second computer system, and optionally one or moreintermediary computer systems. After being received at the secondcomputer system, the portable message may be routed using DCI to anappropriate target application based on the metadata.

[0013] In one embodiment, DCI may include small, network-unawareapplications called “peerlets.” Peerlets may be suitable forapplications including chat, shared whiteboard, and other collaborativeapplications. A peerlet on a first computer system may generate amessage (including collaborative data such as chat text or whiteboardgraphics) and send the message to the distributed computinginfrastructure using an API. The DCI may translate the message from anoriginal or native format to a portable format (e.g., XML), therebygenerating a portable (e.g., XML) message, wherein the portable messagecomprises metadata which comprise identifying characteristics of thesource peerlet. The portable message may then be sent from the firstcomputer system to a second computer system using peer-to-peer messagepassing between the first computer system, the second computer system,and optionally one or more intermediary computer systems. After theportable message is received at the second computer system, DCI mayroute the portable message to a target peerlet on the second computersystem based on the metadata. Like the source peerlet, the targetpeerlet is configured to communicate using the API to the distributedcomputing infrastructure API.

[0014] In one embodiment, DCI may include a system and method forcreating complex distributed applications using pre-complied binaries orother functions on distributed computer systems. Instructions forperforming a complex task may be sent a first computer system to one ormore remote computer systems. The instructions for performing the taskmay comprise instructions for performing one or more subtasks with eachof a plurality of applications. The instructions for performing the taskmay comprise a plurality of messages in a portable format (e.g., XML).At the one or more remote computer systems, the instructions forperforming the task may be translated using DCI from the portable formatto a format which is executable, thereby generating executableinstructions for performing the plurality of subtasks. Finally, theexecutable instructions may be executed at the remote computer systemsto perform the subtasks comprising the task.

[0015] In one embodiment, DCI may include a capability for multiple,independent collaborative sessions for distributed collaborativeapplications (e.g., chat, instant messaging, shared whiteboard, etc.).Using DCI, collaborative data may be sent from a first instance of thecollaborative application on a first computer system to a secondinstance of the collaborative application on a second computer system.In return, collaborative data may be sent from the second instance ofthe collaborative application to the first instance of the collaborativeapplication. Likewise, collaborative data may be sent from a thirdinstance of the collaborative application on the first computer systemto a fourth instance of the collaborative application on the secondcomputer system, and from the fourth instance to the third instance.Each instance of the collaborative application may be associated with aglobally unique ID (GUID) which distinguishes the respective instancefrom other instances in the networked computing environment. Whensending collaborative data to a target computer system, the applicationtype of the relevant collaborative application may be determined. Ifthere is already an instance of the application type on the targetcomputer system, the collaborative data may be sent to the existinginstance. If not, a new instance may be instantiated and may receive thecollaborative data.

[0016] In one embodiment, DCI may include a system and method forreducing interactions between users and applications to an archivableform. User input may be entered to a source application on a firstcomputer system to request performance of a task. In response, the taskmay be performed. A message may also be generated in response to theuser input, wherein the message comprises one or more instructions whichare computer-executable to perform the task. The message may includemetadata which comprise identifying characteristics of the sourceapplication. The message may be translated from an original or nativeformat (e.g., a internal format which is suitable for communication withan API, or a format which is suitable for execution) to a portableformat (e.g., XML) on the first computer system, thereby generating aportable message. The portable message may be stored in a message log ormessage queue for retrieval and/or playback at a later time. Theinstructions in the message may be retrieved and re-executed on the samecomputer system or different computer systems.

[0017] In one embodiment, DCI may include an Autonomous IntelligentManagement System (AIMS). AIMS may provide for the retrieval andplayback of archived portable messages (e.g., XML messages) to perform atask on one or more target computer systems in a network. The targetcomputer systems need not be the original computer system on which theinstructions for the task were recorded.

[0018] In one embodiment, DCI may include a system and method forautomatic software retrieval on a peer-to-peer network. Software may besent from a first computer system to one or more remote computer systemsalong with instructions for automatically installing the software at theremote computer systems. The instructions for deploying the software maycomprise one or more messages in a portable format (e.g., XML). UsingDCI, the instructions for installing the software may be translayed fromthe portable format to an executable format at each of the one or moreremote computer systems, thereby generating executable instructions. Theexecutable instructions may then be executed to install the software ateach of the one or more remote computer systems.

BRIEF DESCRIPTION OF THE DRAWINGS

[0019] A better understanding of the present invention may be obtainedwhen the following detailed description of the preferred embodiment isconsidered in conjunction with the following drawings, in which:

[0020]FIG. 1 illustrates computer systems including peripheral devicescoupled to computer blades in a cage, according to one embodiment;

[0021]FIG. 2 illustrates a computer blade pulled out of the cage,according to one embodiment;

[0022]FIG. 3 illustrates a computer blade having a power supply, harddrive, and motherboard, according to one embodiment;

[0023]FIGS. 4a, 4 b, 4 c, and 4 d illustrate computer blade storagepatterns, according to one embodiment;

[0024]FIG. 5 illustrates a failed computer blade restored onto a backupcomputer blade, according to one embodiment;

[0025]FIG. 6 illustrates an embodiment of a flowchart for restoring afailed computer by copying after a failure is detected;

[0026]FIG. 7 illustrates an embodiment of a flowchart for restoring afailed computer by copying before a failure is detected;

[0027]FIG. 8 illustrates an embodiment of a flowchart for restoring afailed computer by copying from a third storage medium;

[0028]FIG. 9 illustrates a login screen of a management console,according to an embodiment;

[0029]FIG. 10 illustrates a main screen in a web-based managementinterface, according to an embodiment;

[0030]FIG. 11 illustrates a configuration screen, according to anembodiment;

[0031]FIG. 12 illustrates a screen for a scheduling interface, accordingto an embodiment;

[0032]FIG. 13 illustrates an information recovery view, according to anembodiment;

[0033]FIG. 14 illustrates an archive view screen, according to anembodiment;

[0034]FIG. 15 illustrates a memory stack on a computer blade storinginformation from other computer blades, according to one embodiment;

[0035]FIG. 16 illustrates a memory stack for a computer blade separatedby a PC region and a Server region, according to one embodiment;

[0036]FIG. 17 illustrates an enterprise switch and a storage networkswitch controlling attached PCs, according to one embodiment;

[0037]FIG. 18 illustrates a one-to-one move, according to twoembodiments;

[0038]FIG. 19 illustrates a cascading move, according to one embodiment;

[0039]FIG. 20 illustrates a swap move, according to one embodiment; and

[0040]FIG. 21 flowcharts an initiation and process of a move, accordingto one embodiment;

[0041]FIG. 22 is a block diagram illustrating a DCI architecture,according to one embodiment;

[0042]FIG. 23 is a flowchart illustrating a method for using DCI,according to one embodiment;

[0043]FIG. 24 illustrates a Virtual Network Attached Storage (VNAS)architecture, according to one embodiment;

[0044]FIG. 25 is a flowchart illustrating a method for using a VNASsystem, according to one embodiment;

[0045]FIG. 26 is a screenshot that demonstrates a manner in whichcommands can be broadcasted to every node running the DCI platform,according to one embodiment; and

[0046]FIG. 27 is a block diagram illustrating an AIMS architecture,according to one embodiment.

[0047] While the invention is susceptible to various modifications andalternative forms, specific embodiments thereof are shown by way ofexample in the drawings and will herein be described in detail. Itshould be understood, however, that the drawings and detaileddescription thereto are not intended to limit the invention to theparticular form disclosed, but on the contrary, the intention is tocover all modifications, equivalents and alternatives falling within thespirit and scope of the present invention as defined by the appendedclaims.

DETAILED DESCRIPTION OF SEVERAL EMBODIMENTS

[0048] Incorporation by Reference

[0049] U.S. Provisional Patent 60/144,809 titled “A Technique To ExtendThe Operating Distance Of A Universal Serial Bus” is hereby incorporatedby reference in its entirety as though filly and completely set forthherein.

[0050] U.S. Pat. No. 6,119,146 titled “Computer Network Having MultipleRemotely Located Human Interfaces Sharing A Common Computing System”,which was filed May 4, 1998, whose inventors are Barry Thornton, AndrewHeller, Daniel Barrett, and Charles Ely, is hereby incorporated byreference in its entirety as though fully and completely set forthherein.

[0051] U.S. Pat. No. 6,038,616 titled “Computer System With RemotelyLocated Interface Where Signals Are Encoded At The Computer System,Transferred Through A 4-Wire Cable, And Decoded At The Interface”, whichwas filed May 4, 1998, whose inventors are Barry Thornton, AndrewHeller, Daniel Barrett, and Charles Ely, is hereby incorporated byreference in its entirety as though filly and completely set forthherein.

[0052] U.S. Pat. No. 6,012,101 titled “Computer Network Having CommonlyLocated Computing Systems”, which was filed May 4, 1998, whose inventorsare Andrew Heller, Barry Thornton, Daniel Barrett, and Charles Ely, ishereby incorporated by reference in its entirety as though fully andcompletely set forth herein.

[0053] U.S. patent application Ser. No. 09/179,809 titled “A TechniqueTo Transfer Multiple Information Streams Over A Wire Or Wireless Medium”is hereby incorporated by reference in its entirety as though fully andcompletely set forth herein.

[0054] U.S. patent application Ser. No. 09/619,989 titled “System AndMethod For Providing A Remote Universal Serial Bus”, which was filedJul. 20, 2000, whose inventors are Dan Barrett, Mike Barron, and AndrewHeller, is hereby incorporated by reference in its entirety as thoughfully and completely set forth herein.

[0055] U.S. patent application Ser. No. 09/680,760 titled “System AndMethod For Combining Computer Video And Remote Universal Serial Bus InAn Extended Cable”, which was filed Oct. 6, 2000, whose inventor isBarry Thornton, is hereby incorporated by reference in its entirety asthough fully and completely set forth herein.

[0056] U.S. patent application Ser. No. 09/728,667 titled “Computer On ACard With A Remote Human Interface”, which was filed Dec. 12, 2000,whose inventors are Andrew Heller and Barry Thornton, is herebyincorporated by reference in its entirety as though fully and completelyset forth herein.

[0057] U.S. Pat. No. 5,530,960 titled “Disk drive controller acceptingfirst commands for accessing composite drives and second commands forindividual diagnostic drive control wherein commands are transparent toeach other”, which was filed on Jun. 25, 1996, whose inventors are TerryJ. Parks, Kenneth L Jeffries, and Craig S. Jones, is hereby incorporatedby reference in its entirety as though fully and completely set forthherein.

[0058] U.S. Pat. No. 5,483,641 titled “System for scheduling readaheadoperations if new request is within a proximity of N last read requestswherein N is dependent on independent activities”, which was filed onJan. 9, 1996, whose inventors are Terry J. Parks, Kenneth L Jeffries,and Craig S. Jones, is hereby incorporated by reference in its entiretyas though fully and completely set forth herein.

[0059] U.S. patent application Ser. No. 09/892,324 titled “ComputerSystem Having a Remotely Located Human Interface Using Computer I/O BusExtension”, which was filed Jun. 25, 2001, whose inventors are RayDuPont, Mike Tullis, and Barry Thornton, is hereby incorporated byreference in its entirety as though fully and completely set forthherein.

[0060] U.S. patent application Ser. No. 09/892,331 titled “SystemComprising Multiple Co-Located Computer Systems Each Having a RemotelyLocated Human Interface Using Computer I/O Bus Extension”, which wasfiled Jun. 25, 2001, whose inventors are Ray DuPont, Mike Tullis, andBarry Thornton, is hereby incorporated by reference in its entirety asthough fully and completely set forth herein.

[0061] U.S. Provisional Application Serial No. 60/332,143 titled “A FailForward Networked Storage System” filed on Nov. 21, 2001, whose inventoris Barry Thornton, is hereby incorporated by reference in its entiretyas though fully and completely set forth herein.

[0062] U.S. Provisional Application Serial No. 60/411,066 titled“Distributed Computing Infrastructure” filed on Sep. 16, 2002, whoseinventors are Amir Husain, Todd Enright, and Barry Thornton, is herebyincorporated by reference in its entirety as though fully and completelyset forth herein.

[0063] U.S. patent application Ser. No. 10/301,518 titled “DistributedResource Manager” filed on Nov. 21, 2002, whose inventors are SyedMohammad Amir Husain, Todd John Enright, and Barry W. Thornton, ishereby incorporated by reference in its entirety as though fully andcompletely set forth herein.

[0064] U.S. patent application Ser. No. 10/301,536 titled “DataFail-Over For A Multi-Computer System” filed on Nov. 21, 2002, whoseinventors are Syed Mohammad Amir Husain, Todd John Enright, and Barry W.Thornton, is hereby incorporated by reference in its entirety as thoughfilly and completely set forth herein.

[0065] FIGS. 1-3—Elements of Computer Systems Used in VariousEmbodiments

[0066] FIGS. 1-3 illustrate computer system components that may be usedin various embodiments of the invention. As FIG. 1 indicates, in oneembodiment, the system may include a plurality of computer systems,where each computer system may include at least one peripheral device,e.g., comprised in a human interface, and a computer blade. In oneembodiment, a computer blade (or “blade”) may comprise a “computer on acard.” In other words, the computing system may be comprised on acircuit card which may include standard computing system components suchas a CPU, memory, power supply, and network interface, as well as anextender, e.g., a PCI extender, for communicating with the remote humaninterface. Other types of computer systems and components, includingstandard desktop PCs, may also be used to implement the system andmethod for virtual network attached storage. The computer system mayinclude various components necessary for computer operations, such as,but not limited to, a processor and a storage medium. For furtherinformation regarding the use of multiple computer blades in a system,please see U.S. patent application Ser. No. 09/728,667 titled “ComputerOn A Card With A Remote Human Interface”, which was filed Dec. 12, 2000,whose inventors are Andrew Heller and Barry Thornton, which wasincorporated by reference above.

[0067] As will be described in detail below, various embodiments of thepresent invention may be implemented using the systems of FIGS. 1-3,where, for example, information from a first storage medium on a firstcomputer blade may be copied to a second storage medium on a secondcomputer blade. For example, the information may be copied before,during, or after a fail-over condition is detected on the first computerblade. Note that as used herein, the term “fail-over condition” mayrefer to an impending failure of a component, to the component failureitself, or to a condition of a computer that requires attention. Acomputer that indicates a fail-over condition may be referred to as a“failed” computer, even if an actual component failure has not occurred.Thus, detection of a fail-over condition may occur before an actualfailure, or may occur during or after the failure (detection of thefail-over condition). For example, a fail-over condition may indicatefailure of a processor, impending failure of a processor, or even thatthe performance, e.g., the processing capability, of the computer needsto be upgraded or modified. Once the fail-over condition has beendetected, then various actions may be taken to restore, replace, orimprove, functionality of the computer. A fail-over condition mayinclude, but is not limited to, a hard drive crash or a short circuit ina processor, or indications that such a crash or short circuit isimminent or likely. In one embodiment, software executing on one or moreof the computer blades, optionally including the first computer blade,may continually monitor the first computer blade for a fail-overcondition. Other ways of detecting a fail-over condition on the firstcomputer blade may also be within the scope of the invention. Once afail-over condition is detected, a peripheral switch may switch a firstcomputer peripheral device over to a second computer blade. In otherwords, the peripheral switch may switch the human interface from thefirst (failing or failed) computer blade to the second (replacement)computer blade.

[0068] In various embodiments, the information from the first storagemedium may be copied prior to the fail-over condition. For example, theinformation may be copied directly to the second computer blade, oralternatively, the information may be copied onto a third storage mediumon a third computer blade, where after the fail-over condition isdetected, the information from the first storage medium (now stored onthe third storage medium) may be copied onto the second storage mediumof the second computer blade. A peripheral switch may then switch thefirst computer peripheral device over to the second computer blade, andthe user of the first computer system may continue accessing theinformation from the first storage medium without losing user time. Ofcourse, the peripheral switch may be further operable to switch aplurality of peripheral devices in the human interface, i.e., the numberperipheral devices switched is not limited to one. In addition, aperipheral switch may not be needed in an embodiment where a backupcomponent, such as, but not limited to a backup processor or a backupstorage medium, is coupled to the first computer prior to or after afail-over condition is detected in a corresponding component on thefirst computer. For example, if a processor on the first computer has afail-over condition, a backup processor may be coupled to the firstcomputer to take the place of the processor on the first computer with afail-over condition.

[0069]FIG. 1—Computer Blades and Respective Peripheral Devices

[0070] Referring to FIG. 1, an embodiment of computer systems includingperipheral devices coupled to computer blades in a cage is shown. Whileone embodiment may include computer blades, it is noted that othercomputer types and forms may also be within the scope of the invention.In other words, the embodiment shown in FIG. 1 is intended to beexemplary only, and is not intended to limit the types or number ofcomputer systems used.

[0071] As FIG. 1 shows, connecting cables 151, 153, and 155 may connectcomputer blades 101, 105, and 109 to respective peripheral device groupsthrough respective device ports or hubs, referred to herein as C-Ports,157, 159, and 161. In one embodiment, each device port may comprise anextender device that may enable transmission of user interface signals(i.e., peripheral device signals) over distances generally not allowedby standard protocols such as USB. For further information regardingextended communications between a computer and a remote human interface,please see U.S. patent application Ser. No. 09/892,324 titled “ComputerSystem Having a Remotely Located Human Interface Using Computer I/O BusExtension”, which was filed Jun. 25, 2001, and U.S. patent applicationSer. No. 09/892,331 titled “System Comprising Multiple Co-LocatedComputer Systems Each Having a Remotely Located Human Interface UsingComputer I/O Bus Extension”, both of which were incorporated byreference above.

[0072] In one embodiment, the peripheral device groups, such as theperipheral device group coupled to connecting cable 151, may include akeyboard 117, a pointing device, e.g., a mouse 119, a display device,e.g., a computer monitor 121, and/or other peripheral devices for humaninterface. The computer blade, such as computer blade 105, maycommunicate with the peripheral devices coupled to the computer blade105 by sending and receiving encoded human interface signals transmittedover the connecting cable 151. In one embodiment, a cage 113, e.g., ametal cabinet or chassis, may have a plurality of slots, such as slots103, 107, and 111. The computer blades 101, 105, and 109 may be insertedinto the slots 103, 107, and 111, respectively. The cage 113 may alsoinclude cage connectors (not shown) to couple the computer blades 101,105, and 109 to their respective connecting cables 155, 153, and 151.

[0073] The computer blades 101, 105, and 109 may be installed in thecage 113 at a central location, while the peripheral devices for eachcomputer blade 101, 105, and 109 may be located remotely from the cage113, such as at respective work areas of the users of the computerblades 101, 105, and 109. The separation of the peripheral device groupsfrom the computer blades 101, 105, and 109 may allow easier softwareinstallation across a network, such as but not limited to downloadingCD-ROMs, and provide a central location of multiple computers which maysimplify both hardware and software maintenance.

[0074] Each computer blade 101, 105, and 109 may also be coupled to anetwork 115 through an on-board network logic (not shown). The network115 may be a Local Area Network (LAN) or a Wide Area Network (WAN), suchas the Internet, although other networks are also contemplated. Asmentioned above, in one embodiment, the computer blades 101, 105, and109 may be inserted into respective slots 103, 107, and 111 of the cage113, and coupled to respective peripheral device groups through the cageconnectors (not shown) and connecting cables 151, 153, and 155. In oneembodiment, each computer blade 101, 105, and 109 may also be coupled tothe network 115 through the cage connectors (not shown) and a networkcable, such as Ethernet cables 163, 165, and 167.

[0075]FIG. 2—Computer Blade

[0076] Referring to FIG. 2, an embodiment of a computer blade 105 isshown. In one embodiment, the computer blade 105 may include componentssuch as but not limited to a slide drawer frame 205, motherboard 207, apower supply 210, and a hard drive 208, as shown. In one embodiment, themotherboard 207, the power supply 210, and the hard drive 208 may becoupled to the slide drawer frame 205. In one embodiment, the slidedrawer frame 205 may be three rack units high (or approximately 5.25inches) to occupy a much smaller space than standard PC units, althoughother slide drawer frame 205 dimensions may also be within the scope ofthe invention.

[0077] The motherboard 207 may be a printed circuit board withcomponents such as but not limited to a central processing unit (CPU),memory, and LAN interface. Other types of motherboards and other typesof motherboard components are also contemplated. The hard drive 208 maybe a non-volatile memory such as but not limited to a hard drive,optical drive, and/or flash memory. The computer blade 105 maycommunicate with external systems such as but not limited to peripheraldevices and networks, through an edge connector 209. In one embodiment,the edge connector 209 may transmit signals such as but not limited tonetwork signals, input/output (I/O) signals, video signals, audiosignals, and universal serial bus (USB) signals. For example, the edgeconnector may communicate network signals to a network and encoded humaninterface signals to a group of peripheral devices.

[0078] In one embodiment, the computer blade 105 may further includepower supply 210 mounted on the slide drawer frame 205 with an internalpower source or coupled to an external power source (not shown) toprovide power to the computer blade 105. The power supply 210 mayconvert local main power to an appropriate voltage for the computerblade 105. Because computer blade 105 has an individual power supply210, if the power supply 210 fails, computer blade 105 may be the onlycomputer blade that fails. In one embodiment, a single power supplylocated in the cage 113 (shown in FIG. 1) may supply power to severalcomputer blades such as computer blades 101, 105, and 109 (shown in FIG.1). However, a single power supply for the cage 113 (shown in FIG. 1)may be a single point of failure for the cage 113. If the single powersupply fails, multiple computer blades may also fail, requiring multiplereplacement blades. In a system with a single power supply for a cage113, the computer blades 101, 105, and 109 may all require stand-byreplacement blades connected to another power source. If the powersupply for the cage 113 fails, information from the computer blades 101,105, and 109 may be copied onto the replacement computer blades fromother computer blades in the system to which information from thecomputer blades 101, 105, and 109 had been previously copied.

[0079] As FIG. 2 also illustrates, in one embodiment, cage 113 may havea plurality of slots, such as slot 107, to house the computer blade 105.The computer blade 105 may be inserted into one of the slots of the cage113, such as slot 107. The cage 113 may include a cage connector (notshown) to couple to the edge connector 209 on the computer blade 105.The cage connector may also include an external second connector (notshown) that is electrically coupled to the computer blade 105 when thecomputer blade 105 is inserted into the slot 107. The external secondconnector may be further coupled to the connecting cables 151, 153, and155 (shown in FIG. 1) for communication of the encoded human interfacesignals to a group of peripheral devices at a remote location. The useof the cage connectors (not shown) as an intermediate connection betweencomputer blade 105 and the connecting cable 153 (shown in FIG. 1) mayallow the removal and exchange of computer blade 105 without the need todisconnect the connecting cable 153 (shown in FIG. 1) from the cage 113.If the computer blade 105 fails, the computer blade 105 may be removedand a new computer blade (not shown) inserted in a slot, e.g., slot 107.As noted above, in one embodiment, when the computer blade 105 fails,the user's human interface, e.g., one or more peripheral devices, may beswitched to a replacement computer blade (possibly in a manner that istransparent to the user), after which the failed computer blade may beremoved and replaced.

[0080]FIG. 3—Computer Blade Components

[0081] Referring to FIG. 3, an embodiment of a computer blade 105 havinga power supply 210, hard drive 208, and motherboard 207 is shown. Thecomputer blade 105 may include elements that make up a standard PC, suchas, but not limited to, a motherboard 207 with various components suchas but not limited to a processor, e.g., a CPU 306, memory 304, andinterface logic 302, which may include network logic 305, I/O logic 307,and interface logic 303, as well as other interface circuitry associatedwith a motherboard 207, configured on a single card. The network logic305 may include a LAN or WAN connection, such as but not limited to aIEEE803.2 (10/100 BaseT) Ethernet, and circuitry for connecting toperipheral devices coupled to the computer blade 105. The computer blade105 may be electrically coupled to the cage 113 (shown in FIG. 2)through the edge connector 209 that may face to the rear of the computerblade 105. In an embodiment of the invention, the computer blade 105 mayslide into a slot 107 (shown in FIG. 2) of the cage 113 (shown in FIG.2), making contact with the cage connector (not shown).

[0082] In one embodiment, the computer blade 105 may further include anetwork interface logic 305 included on a printed circuit board forinterfacing to a network. The network logic 305 may encode networksignals into a format suitable for transmission to the network. Thenetwork logic 305 may also receive encoded network signals from thenetwork, and decode the encoded network signals. In one embodiment, themotherboard 207 may further include logic supporting PCI slot-basedfeature cards.

[0083] In one embodiment, the components on the computer blade 105 maybe arranged from front to back for thermal efficiency. The interfacelogic 302 may be located at the rear of the computer blade 105, whilethe power supply 210 and hard disk 208 may be located at the front ofthe computer blade 105. In one embodiment, the computer blade 105 mayhave different slide drawer frame shapes, such as but not limited tosquare, rectangle, cubic, and three-dimensional rectangular forms. Inone embodiment, the computer blade 105 may have components mounted oneither side of the computer blade 105. The computer blade 105 may alsohave components mounted on both sides of the computer blade 105. If theslide drawer frame 205 has a three-dimensional shape, the components maybe mounted on an inside surface and outside surface of the slide drawerframe 205.

[0084]FIGS. 4a, 4 b, 4 c, and 4 d—Computer Blade Storage Patterns

[0085] Referring to FIGS. 4a, 4 b, 4 c, and 4 d, embodiments of computerblade storage patterns are shown for three computer blades 401, 403, and405. It is noted that the systems shown in FIGS. 4a, 4 b, 4 c, and 4 dare meant to be exemplary and are not intended to limit the system ormethod to any particular number of computers. As shown in FIG. 4a, inone embodiment, to prepare for a failure of computer blade 401, theinformation from a storage medium on the computer blade 401 may becopied (i.e., backed up) onto a storage medium on the computer blade403. In one embodiment, a first portion of the information on thecomputer blade 401 may be located in the random access memory (RAM) ofthe first computer blade 401 and a second portion of the information maybe located on a hard drive of the computer blade 401. Other locations ofinformation from the computer blade 401 may also be within the scope ofthe invention. If the computer blade 401 fails or indicates a fail-overcondition, a peripheral device coupled to the computer blade 401 througha peripheral switch may be switched over to the computer blade 403through the peripheral switch, thereby enabling a user of computer blade401 to continue accessing the information (originally) from computerblade 401 (but now on computer blade 403). In one embodiment, theinformation originating from computer blade 401 (and previously copiedonto the storage medium of computer blade 403) may also be copied ontothe storage medium of computer blade 405. The peripheral switch may alsobe operable to switch the peripheral device over to computer blade 405in the event that both computer blades 401 and 403 fail. In anotherembodiment, upon detecting a fail-over condition of a processor in thecomputer blade 401, a backup processor may be switched over to thecomputer blade 401 to access and run off of the storage medium on thecomputer blade 401. In another embodiment, if the storage medium on thecomputer blade 401 fails, information from a backup computer blade maybe copied over to a backup storage medium, and the components of thecomputer blade 401 may access the backup storage medium.

[0086] In one embodiment, shown in FIG. 4b, the information on thestorage medium of computer blade 403 may be copied onto the storagemediums of computer blade 401 and 405. Similarly, in one embodiment, theinformation on the storage medium of computer 405 may be copied onto thestorage mediums of computer blade 401 and 403, as shown in FIG. 4c.Thus, various of the computer blades may provide backup storage for oneanother.

[0087] In one embodiment, the computer blade 401 may detect anddetermine identities of one or more local computer blades, such as, butnot limited to computer blades 403 and 405, on a subnet. Once detected,the computer blade identities may be stored and cached for later accesson the computer blade 401. The detected computer blades to be used inbacking up a computer blade may be assigned automatically or manually.In one embodiment, e.g., through an administration interface, computerblades may be assigned to each other at any time. A “replication factor”configuration value, may define how many other computer blades to sendcopies of the information on the computer blade to be backed up. Forexample, if computer blades 401, 403, and 405 form a subnet, thecomputer blade 405 may detect the computer blades 401 and 403 and thenchoose the computer blade 401 and the computer blade 403 as computerblades to send backups to. If the computer blade 405 has a fail-overcondition, either the computer blade 401 or the computer blade 403 maybe used to restore information to the computer blade 405, or used tosend the information originating from the computer blade 405 to areplacement computer blade.

[0088] In one embodiment, the computer blades in one subnet may bebacked up to computer blades on another subnet. For example, thecomputer blades in one subnet may be able to detect the computer bladesin another subnet, and then the configuration of which computer bladesare used to back up other computer blades between the two subnets may beperformed, e.g., by an administrator or automatically. In oneembodiment, a web based configuration interface may allow computerblades to be assigned or reassigned to remote computer blades, includingblades on other subnets. Computer blades may backup with neighboringcomputer blades, computer blades in a same building, and/or computerblades in a remote location. In one embodiment, computer blades may bebacked up to both geographically local computer blades andgeographically remote computer blades. The local computer blades mayprovide quicker restoration on a replacement computer blade and remotecomputer blades may provide increased security and reliability.

[0089] For example, in one embodiment where information from a firstcomputer blade is backed up onto both a local computer blade and aremote computer blade, if a fail-over condition occurs on the firstcomputer blade, and the local computer blade with the backup isfunctional, backed up information can be copied to a replacementcomputer blade from the local computer blade without having to copyinformation from the remote computer blade. Copying information from theremote computer blade may take longer than from the local computerblade. If multiple computer blades at a site have a fail-over condition,(e.g., if both the first computer blade and the local computer bladewith the backup fail) the remote computer blade may have a copy of theinformation from the first computer blade to copy to a replacementcomputer blade.

[0090] In one embodiment, several local computer blades may backup to asingle remote computer blade. The local computer blades may also bebacked up to other local computer blades. Having one remote computerblade to backup to may make the remote backups more manageable. Thesingle remote computer blade handling multiple backups may be morepowerful than a remote computer blade handling one backup. The remotecomputer blade may be managed through a web-based management interface.In one embodiment, the web-based management interface may be used by anadministrator to schedule snapshots and manage configuration settings.

[0091] To optimize bandwidth during backups (especially remote backups),several factors including, but not limited to, the replication factor,the frequency of sending backup information to other computer blades,and the kind of connectivity that exists between the local and remotecomputer blades may need to be considered.

[0092] As mentioned above, in one embodiment, the information oncomputer blade 401 (and/or from other computer blades) may be backed upin a snapshot method in which all of the information to be copied isbulk copied at specified refresh times, where refresh times may indicateparticular times to refresh (e.g., every hour on the hour, once per dayat 3:00 a.m., etc.), or may indicate intervals between successiverefreshes. For example, in one embodiment, a refresh time may be an hoursuch that the information is bulk copied from the first storage mediumonto the second and/or third storage medium once per hour.

[0093] In another embodiment, a delta method may be used to copy theinformation from the first storage medium, where only a differencebetween a previous copy of the information copied to the second and/orthird storage medium and the current information on the first storagemedium is added to the second and/or third storage medium. The deltamethod may take less time to update but it is conceivable that spacerequired on the storage medium of computer blade 403 may grow to verylarge proportions because the delta method may keep adding informationwithout removing deleted information. The first time the delta method isused it may function analogously to the snapshot method because theinitial copy may encompass all the information from the storage mediumon the computer blade 401. In another embodiment, the growth of archiveddata is automatically managed by the “aging” feature which removesarchives or deltas older than a user-defined time period.

[0094] In one embodiment, if the computer blade 401 regularly backs upto both the computer blade 403 and the computer blade 405, and thecomputer blade 405 becomes non-functional, the computer blade 401 maycontinue to backup to the computer blade 403. If the computer blade 401is using a delta method, incremental backups on a computer blade may betagged and archived. If the computer blade 405 becomes functional again,a peersync method may be used to update the last incremental backupsfrom the computer blade 401 to the computer blade 405. For example, ifthe computer blade 401 backs up information from the computer blade 401onto the computer blade 405 using a delta method, the computer blade 405may have missed several incremental backups (i.e. backups coveringchanges in information on the computer blade 401 since the last backup.)To update the computer blade 405, when the computer blade 405 becomesfunctional, the computer blade 401 may send the computer blade 405 acatalog of past incremental backups. The computer blade 405 may comparethe catalog to the incremental backups the computer blade 405 currentlyhas and then query the computer blade 401 for the incremental backupsthe computer blade 405 needs to become current. In one embodiment, anarchive of the past incremental backups may be sent along with thecatalog, and the computer blade 405 may not query the computer blade 401for the incremental backups. Instead, the computer blade 405 may pullthe needed incremental backups from the archive.

[0095] In one embodiment, information being written to the storagemedium of the computer blade 401 may also be written to the computerblade 403 at substantially the same time. In other words, rather thanbacking up the information after it has been written to computer blade401, the information writes may be performed effectively in parallel, orat least in conjunction. If the computer blade 401 fails, the peripheralswitch may switch the peripheral device over to the computer blade 403.In one embodiment, the information on the storage medium on computerblade 403 (which may mimic or replicate the information on the storagemedium of the failed computer blade 401) may be copied onto the computerblade 405. The peripheral switch may switch the peripheral device fromthe computer blade 401 over to the computer blade 405. Thus, in thisexample, although the information of computer blade blade 401 wasbacked-up on computer blade 403, computer blade 405 is used as thereplacement computer blade, and so the backed-up information is copiedto computer blade 405 and the peripheral device switched from the failedcomputer blade 401 to the replacement computer blade 405.

[0096] In one embodiment, as shown in FIG. 4d, the hard drives on thecomputer blades 401, 403, and 405, such as, but not limited to, harddrive 208 shown in FIG. 3) may share memory space using a virtualnetwork storage space (VNAS) system incorporating a decentralizedpeer-to-peer sharing process. Information stored on the computer blade401 may also be stored on computer blades 403 and 405. If the computerblade 401 fails, a peripheral switch may switch a peripheral device fromcomputer blade 401 over to computer blade 403. For example, computerblade 403 may then access the information originally stored on orassociated with the computer blade 401 from the storage medium ofcomputer blade 403 and the third storage medium of computer blade 405.In other words, the information originally stored on the failed computerblade 401 may be distributed over the computer blades 403 and 405, butmay be accessible (to replacement computer blade 403) as if stored on asingle (virtual) storage medium. In another embodiment, the (backed-up)information stored on the computer blades 403 and the 405 may beorganized (e.g., copied) onto the replacement computer blade 403 to havethe information from the failed computer blade 401 collected onto onecomputer. The peripheral switch may then switch the peripheral devicefrom the first computer over to the computer with the organized orcollected copy.

[0097] In one embodiment, failure management software may execute toredirect information reads and information writes directed at the failedhard drive to an operating hard drive until a replacement computer orreplacement hard drive is brought into service. In one embodiment, thebackup copy of the lost information may already be on a replacementdisk. As noted above, in one embodiment, the entire process istransparent to the user, i.e., the user may not notice the failure ofthe computer blade.

[0098] Referring back to FIG. 4a, in one embodiment of a topology forthe computer blades 401, 403, and 405, the computer blades 401, 403, and405 may use failure information backup in a virtual network attachedstorage (VNAS) system. In one embodiment, the information may exist inmultiple locations across the VNAS system composed of computer blades401, 403, and 405, such that an occurrence of a failed computer blade403 does not result in the loss of vital information from the failedcomputer blade 403. Other information backup strategies may also bewithin the scope of the invention to ensure information redundancy. Forexample, other RAID (Redundant Array of Inexpensive Disks) levels may beused.

[0099] In one embodiment, an underlying distributed computerinfrastructure (DCI) may be used to distribute resources among thecomputer blades. DCI is further described with reference to FIGS. 23 and24. Each computer blade may be assigned a number of “peer” or neighborcomputer blades that may be used to backup information from the storagemedium of a computer blade. “Peer” computer blades, such as, but notlimited to, computer blades 403 and computer blade 405, may be assignedto a nearby computer blade 401. In one embodiment, computer blades maybe backed up onto computer blades at a remote location. For example,multiple groups of computer blades at multiple locations may be backedup to a one or more central locations, such as, but not limited todisaster recovery centers, with replacement computer blades. In oneembodiment, backups to the disaster recovery center may be scheduled sothat multiple groups of computer blades can coordinate their backups. Inone embodiment, a disaster recovery system may provide a centrallocation for a group of moving computer blades to use forinitialization. For example, several moving field hospitals usingcomputer blades with the same set of programs and user preferences mayinitialize their computer blades from a central location of computerblades.

[0100]FIG. 5—Restoring a Failed Computer Blade Onto a Backup ComputerBlade

[0101] Referring to FIG. 5, an embodiment of restoring or rebuilding afailed computer blade's functionality (e.g., computer blade 403) onto abackup computer blade (e.g., computer blade 501) is shown. For example,the failed computer blade 403 may have a fail-over condition such as afatal hard drive crash or a short-circuit on the motherboard 207. In oneembodiment, rebuilding a desktop experience (for a user of the failedcomputer) may include identifying a replacement computer blade 501 touse, switching via the connector cable 153 (shown in FIG. 1) to theuser's desktop connector, and loading failed computer blade informationfrom either the first computer blade 401 or (assuming a previous backupto computer blade 405) from third computer blade 405. In one embodiment,the fail-over condition of computer blade 403 may be detected andsignaled automatically by computer blade 403, or by computer blades 401and/or 405. Other signals and other sources may also be within the scopeof the invention.

[0102] In one embodiment, the information originating from the computerblade 401 (to be copied to another computer blade for backup) mayinclude user preferences. Including the user preferences with theinformation to be copied to another computer blade 403 may enable a movemanager application and/or a switch manager application (or equivalent)to seamlessly provide a replacement computer blade (e.g., computer blade501) with a similar look, feel, and functionality as a computer bladethat has a fail-over condition. The move manager, as discussed below,may implement the transfer of information from one computer blade toanother computer blade. The switch manager application may implementswitching a first peripheral from a first computer blade to areplacement computer blade.

[0103] In one embodiment, the fail-over condition of computer blade 403may be signaled manually, such as by a user calling a systemadministrator. In one embodiment, reconnecting a user's peripheraldevices, e.g., keyboard 123 (see FIG. 1), mouse 125, and monitor 127,may include identifying replacement computer blade 501, loading thefailed computer blade 403 information onto the replacement computerblade 501 from either the first computer blade 401 or the third computerblade 405, and establishing a connection between the user's peripheraldevices and the replacement computer blade 501, such as via a softswitch (not shown). In one embodiment, while the information is beingrestored to the replacement computer blade 501, information reads andinformation writes from and to the failed computer blade 403 may bediverted to the replacement computer blade 501 so that a user'sproductivity is not interrupted. In one embodiment, a replacementcomputer blade 501 may have the standard operating system andapplications already stored on it. When a fail-over condition occurswith a user's computer blade, the peripheral device for the user'scomputer blade may be switched over to the replacement computer bladeand the user may begin using the applications already stored on thereplacement computer blade. Backup information may be restored to thereplacement computer blade in the background, and while the user usesapplications already stored on the replacement computer blade, writesthe user performs may be diverted to the replacement computer blade.

[0104] In one embodiment, information may be copied onto a backupcomputer after a fail-over condition has been detected. For example, asnoted above, first computer 401 may have a first processor and a firststorage medium coupled to the first processor. The first storage mediummay be a medium including but not limited to a random access memory anda hard disk drive. Second computer 403 may have a second processor and asecond storage medium coupled to the second processor. A communicationlink, e.g., a bus (not shown), may couple the first computer 401 to thesecond computer 403. In addition, a peripheral switch may be coupled tothe first computer 401 and the second computer 403 and may route signalsfrom a human interface, such as but not limited to a first peripheraldevice coupled to the first computer 401, to the first computer 401through a peripheral device port coupled to the first computer 401.

[0105] In one embodiment, the second storage medium on the secondcomputer 403 may store program instructions executable by the secondprocessor to detect a fail-over condition of the first computer 401 andcopy information from the first storage medium onto the second storagemedium, thereby making the information accessible by the secondprocessor. Part of or substantially all of the information on the firststorage medium may be copied onto the second storage medium. Theperipheral switch may be configured to route signals between the firstperipheral device and the second computer to make the second processorand the second storage device accessible by the first peripheral device.In one embodiment, copying information from the first storage medium tothe second storage medium and routing signals from the first peripheraldevice to the second processor may occur without user input to triggerthe copying and routing, i.e., the data fail-over process may beperformed programmatically. Therefore, the copying and re-routing may betransparent to a user of the first computer 401. Thus, in oneembodiment, the peripheral switch may switch the signals from the firstperipheral device targeted to the first computer 401 over to the secondcomputer 403 without a user input to trigger the switching. In anotherembodiment, if the first storage medium fails, the first processor maysimply access the second storage medium (e.g., of the second computer403) instead of switching the first peripheral device to the secondprocessor (e.g., the second computer blade 403). In one embodiment, ifthe first processor has a fail-over condition, but the first storagemedium is still functional, the second processor may simply access thefirst storage medium and the first peripheral switch may be switchedover to the second processor.

[0106] In one embodiment, the storage medium on the second computer 403may store program instructions executable by the second processor tocopy information from the first storage medium onto the second storagemedium to make the information accessible by the second processor beforethe second processor detects a fail-over condition of the first computer401. Part of or substantially all of the information on the firststorage medium may be copied onto the second storage medium, where theinformation may be stored (and optionally updated) until a fail-overcondition (of the first computer 401) is detected.

[0107] In one embodiment, the information may be stored on additionalstorage mediums, e.g., in case the second computer also has a failure,e.g., a hard disk crash. In one embodiment, the information from thefirst storage medium may be repeatedly copied onto the second storagemedium to keep the information on the second storage medium current withthe current state of the first storage medium. For example, in oneembodiment, the information on the first storage medium may be copiedover the previously copied information from the first storage medium onthe second storage medium. In another embodiment, the information fromthe first storage medium may be initially copied onto the second storagemedium, and then subsequent changes to the information on the firststorage medium may be stored onto the second storage medium over time.The information on the first storage medium may then be reconstructedusing the initial copy stored and the subsequent changes. Periodically,the initial copy and subsequent changes may be overwritten with a newcopy of the information on the first storage medium, e.g., to preventthe stored subsequent changes from filling up the second storage medium.

[0108] In one embodiment, the first storage medium may also use space onthe second storage medium to store information not stored on the firststorage medium, e.g., may use the space for purposes other than backup.The first computer 401 may keep a record of the location of the extrainformation stored on the second storage medium. In one embodiment, theinformation from the first computer 401 may also be stored on otherstorage mediums, e.g., on other computers. For example, if the firststorage medium is running out of space, it may use space on the secondstorage medium or other storage mediums to save information to, thususing other computers' storage mediums for overflow. In one embodiment,the information on or originating from the first storage medium may bestriped onto other storage mediums. In addition, information from thesecond storage medium may be copied onto the first storage medium and/orother storage mediums in case the second computer fails or the secondcomputer needs additional space to store its information.

[0109] In one embodiment, a third computer 405 including a thirdprocessor and a third storage medium coupled to the third processor mayalso be coupled to the communication link. The third storage medium maystore program instructions executable by the third processor to copy(i.e., backup) information from the first storage medium onto the thirdstorage medium. The program instructions may be further executable bythe third processor to detect a fail-over condition of the firstcomputer 401, and to copy information from the third storage medium tothe second storage medium so that the information is accessible by thesecond processor. The peripheral switch may then operate to routesignals between the first peripheral device and the second processor ifthe first computer 401 fails.

[0110] In another embodiment, the third storage medium may not becomprised in the third computer, e.g., computer 405, but may be coupledto the communication link as a substantially independent networkedresource. In this embodiment, the second computer 403 may copyinformation from the first storage medium (e.g., from the first computer401) onto the third storage medium. Thus, the second computer 403 maybackup information from the first computer 401 onto the third storagemedium. After a fail-over condition of the first computer 401 isdetected, information from the third storage medium (that was originallyon the first computer 401) may be copied to the second storage medium tomake the information accessible by the second processor, i.e., by thereplacement computer 403. The peripheral switch may then route thesignals from the first peripheral device to the second computer 403.

[0111] FIGS. 6-8— Flowcharts of Methods For Responding to a Fail-OverCondition

[0112]FIGS. 6 through 8 are flowchart diagrams of various methods forresponding to a detected fail-over condition. Various embodiments of themethods described below may be implemented in accordance with any of thesystems described above, where a first computer, including a firstprocessor and a first storage medium coupled to the first processor,couples to a first peripheral device via a peripheral switch, where theperipheral switch may be configured to route signals between the firstperipheral device and the first computer. A second computer, including asecond processor and a second storage medium coupled to the secondprocessor, may be coupled to the first computer via a communicationlink, as described above. The storage medium of the first and/or thesecond computer may store program instructions executable by the firstand/or second processor to implement various embodiments of the methodsdescribed below. As also described above, in some embodiments, othercomputers, e.g., a third computer, may also perform all or portions ofthe methods described herein. It should be noted that in variousembodiments of the methods described below, one or more of the stepsdescribed may be performed concurrently, in a different order thanshown, or may be omitted entirely. Other additional steps may also beperformed as desired.

[0113] As FIG. 6 shows, in 601, a fail-over condition for the firstcomputer may be detected, for example, regarding the first processor orthe first storage medium, although the fail-over condition may relate toany other components or subsystems of the first computer. As mentionedabove, the fail-over condition may indicate a failure of the respectivecomponent, or may indicate that such a failure is likely or imminent,although in this particular embodiment, the fail-over condition does notinclude an actual failure of the first storage medium, since informationis copied therefrom after detection of the fail-over condition. Thedetection process generally involves some type of monitoring of thefirst computer. For example, various metrics may be determined thatindicate a fail-over condition, such as, for example, read/write errorrates, operating temperatures, and so forth, and these metrics may bemonitored to detect the fail-over condition. Of course, in variousembodiments, the monitoring process may be performed by the firstcomputer itself, or by any other computers coupled to the firstcomputer, as desired.

[0114] In 603, information stored on the first storage medium may becopied onto the second storage medium, thereby making the informationaccessible by the second processor. For example, in a situation wherethe first processor fails the second computer may access the firststorage medium and copy at least a portion of its contents to the secondstorage medium, after which the second processor, i.e., the secondcomputer, may access the information. As another example, if thefail-over condition is due to an imminent failure of the first storagemedium, the second computer may access the first storage medium andattempt to copy the desired portion of its contents to the secondstorage medium, after which the second processor may access theinformation, although it is noted that in some cases the storage mediummay fail before all of the desired information has been copied.

[0115] Finally, once the information has been copied to the secondcomputer, then in 605, the peripheral switch may be configured to routesignals between the first peripheral device and the second computer. Thefirst peripheral device may then access the second processor and thesecond storage medium. It should be noted that although the methoddescribed refers to the first peripheral device being switched from thefirst computer to the second computer, in preferred embodiments, aplurality of peripheral devices, i.e., human interface devices composinga human interface, are coupled to the first computer, and aresubsequently switched by the peripheral switch to the second computer.Thus, the peripheral switch may operate to switch the entire humaninterface of the first computer to the second computer.

[0116] Thus, in the embodiment of FIG. 6, the information stored on thefirst computer may be copied to the replacement computer (i.e., thesecond computer) after detection of the fail-over condition. It is notedthat this approach may make transparency of the process to the userproblematic, in that there may be a noticeable delay between thedetection of the fail-over condition and resumption of operations usingthe replacement computer.

[0117] In the embodiment shown in FIG. 7, actions are taken prior todetection of the fail-over condition that may significantly improve,i.e., decrease, the time it takes to resume user operations with thereplacement computer. In other words, compared to the method of FIG. 6,the expected downtime for the user may be substantially reduced.

[0118] As FIG. 7 shows, in 701, information from the first storagemedium may be copied onto the second storage medium to make theinformation from the first storage medium accessible by the secondstorage processor. In other words, information stored on the firststorage medium may be backed-up onto the second storage medium. Invarious embodiments, this backup operation may be performed by the firstcomputer, by the second computer, or by another computer, e.g., thethird computer.

[0119] In 703, a fail-over condition may be detected for the firstcomputer, e.g., related to the first processor and/or the first storagemedium (or any other component of the first computer). It is noted thatin various embodiments, the detection of the fail-over condition may beperformed by various of the computers in the system, e.g., by the first,second, and/or third computers.

[0120] In response to the detection of the fail-over condition, in 705,the peripheral switch may operate to route signals between the firstperipheral device and the second computer. The first peripheral devicemay then access the second processor and the second storage medium. Inother words, the peripheral switch may switch the human interface of thefirst computer over to the second computer, as described above.

[0121] Thus, in the embodiment of FIG. 7, because the information isbacked-up to the second computer, i.e., the replacement computer, priorto the fail-over condition, once the fail-over condition for the firstcomputer is detected, the switchover from the first computer to thereplacement computer may occur substantially immediately, i.e., withminimum delay. Thus, in this embodiment, transparency to the user of theswitchover process may not be difficult to achieve.

[0122] In the embodiment shown in FIG. 8, the third computer, includingthe third processor and third storage medium is coupled to the first andsecond computers via communication link.

[0123] As shown in FIG. 8, in 801, information from the first storagemedium may be copied onto the third storage medium. In other words,information stored on the first storage medium may be backed-up onto thethird storage medium. As noted above, in various embodiments, thisbackup operation may be performed by the first computer, secondcomputer, the third computer, or yet another computer included in thesystem.

[0124] In 803, a fail-over condition may be detected for the firstcomputer, e.g., related to the first processor and/or the first storagemedium (or any other component of the first computer). As mentionedabove the detection of the fail-over condition may be performed byvarious of the computers in the system, e.g., by the first, second,and/or third computers (or others).

[0125] In response to the detection of the fail-over condition, in 805,the information from the first storage medium may be copied from thethird storage medium onto the second computer, i.e., onto the secondstorage medium, to make the information accessible by the secondprocessor. In other words, the information may be copied from the backupcomputer (the third computer) to the replacement computer (the secondcomputer).

[0126] Finally, in 807, the peripheral switch may be configured to routesignals between the first peripheral device and the second computer (thereplacement computer). The first peripheral device may then access thesecond processor and the second storage medium (and may be accessed bythe second processor).

[0127] Similar to the embodiment of FIG. 7, this embodiment includesbacking up the information stored on the first computer (to the thirdcomputer) prior to detection of the fail-over condition, and thus mayfacilitate transparency of the process from the user's perspective.

[0128] Resource Manager

[0129] Various embodiments of the methods described above with referenceto FIGS. 6-8 may be performed by a resource manager. In other words,some or all of the storing, monitoring, detecting, and configuring maybe performed or managed by the resource manager. Additionally, theresource manager may be operable to manage the VNAS system in oneembodiment. The resource manager may be operable to manage the pluralityof computers and associated peripheral devices. In one embodiment, theresource manager may be located on one of the computer blades. Inanother embodiment, a copy of the resource manager may operate on eachof the computer blades. In yet another embodiment, the resource managermay be distributed across the plurality of the computer blades. In eachof these embodiments, the resource manager, or resource managers, mayoperate to schedule efficient information storage among the plurality ofcomputer blades, e.g., computer blades 401, 403, and 405.

[0130] In one embodiment, the resource manager may operate to monitorresource usage for each of the plurality of computers. In other words,the resource manager may monitor performance metrics for each computersuch as a total memory size, a used memory size, a virtual memory size,peripheral type, available ports, processor type, processor speed, typeof installed applications, whether a user is logged in, frequency oflogin ins, percentage of usage of CPU, percentage of usage of harddisks, network hardware installed, network usage, usage of installedapplications, video specifications, usage of CD-ROM, a variable impartedby the operating system, and a variable imparted by the BIOS, amongothers.

[0131] In one embodiment, the resource manager may function both as ananalyzer and a controller for the system. As an analyzer, the resourcemanager may utilize information about the performance and use patternsof each of the plurality of computers. Based on the performance and usepatterns, the resource manager may compute demand and usage metrics orissues (e.g., processor time, memory usage and demand, hard drivememory, and network information). The resource manager may also generatereports on applications and links used by the system. These patterns maybe used to generate a map of the demands on the system's collectiveresources over time. The continually updated map may be used by thesystem administrator and/or the resource manager in order to performpredictive and proactive scheduling of resources to users. Other uses ofthe map may also be within the scope of the invention.

[0132] FIGS. 9-14— Screen Shot Embodiments of Various Interfaces

[0133] In one embodiment, software used to manage functions such as, butnot limited to, assignment of computer blades to other computer bladesfor backup, detecting a fail-over condition in a computer blade, andmanaging the copy process from a backup computer blade to a replacementcomputer blade, may be installed and managed using a graphicalinstallation program. In one embodiment, installation may be performedby a computer blade local administrator. The installation program may berestricted to administrator access because the installation program mayrequire system resources to which only the administrator may haveaccess. However, other installers are also contemplated. While variousembodiments of screens and interfaces are shown, it noted that otherscreens and interfaces may also be within the scope of the invention.

[0134]FIG. 9—Screen Shot of a Login Screen

[0135]FIG. 9 illustrates an embodiment of a login screen 901 of amanagement console, e.g., a web-based management interface. The loginscreen 901 may appear before a management session is started. In oneembodiment, to enter the management console, a user may need domainadministration rights. A login may be validated through a primary domaincontroller. A username 903 and password 905 may be registered with anetwork to validate users on the management console. The user may supplya username 903, password 905, and a domain name 907, although other userinputs are also contemplated. Once the username 903, password 905, anddomain name 907 are authenticated, the user may be automaticallyredirected to a management console main menu or screen, described below.

[0136]FIG. 10—Screen Shot of an Auto-Discovery Screen

[0137]FIG. 10 illustrates an embodiment of a main screen in a web-basedmanagement interface such as may be used in various embodiments of theresource manager. For example, the main screen shown FIG. 10 illustratesan auto-discovery screen 1001 showing a list 1005 of computer blades ona local subnet. In one embodiment, clicking on a name of a computerblade may load the management interface with information about thatcomputer blade. In the embodiment shown, an indicator 1003 in the topleft hand corner of the main screen displays the name of the computerblade to which the administrator is currently connected (e.g., acomputer blade named swlab1). When management software is firstinstalled on a computer blade, the administrator or user may click‘Discover Nodes’ 1007, and if no computer blade names appear, theadministrator or user may click “Re-discover” 1009 to get a list ofcomputer blade names.

[0138]FIG. 11—Screen Shot of a Configuration Screen

[0139]FIG. 11 illustrates an embodiment of a configuration screen 1101.A parameter indicating a location of a configuration file for a backupcomputer. In various embodiments, the configuration file for eachrespective computer may have a standard location on that computer (e.g.,the administrator may not need to determine the location of eachconfiguration file on each computer when performing data fail-over). Inone embodiment, a root directory 1105 may list the location on a storagemedium that may be considered as a starting point for a backup process,including, but not limited to, archiving. A subdirectory may be includedin the root directory 1105 for the backup process. In one embodiment, anoptimum setting for the parameter may point to or indicate the locationof preferences file (e.g. a Microsoft™ Windows Documents and Settings)folder to backup user information and preferences for local users of acomputer blade. A replication factor 1111 may define how many peers tosend local information to and may be used to automatically assign theappropriate number of other computer blades to the local computer blade.A directory exclusion list 1107 may list the names of directories thatare not to be included in the backup process, even if they aresubdirectories of the root directory. The directory exclusion list 1107may explicitly exclude system or binary folders that may be unnecessaryto backup. File exclusion 1109 may indicate a comma-delimited list ofextensions (e.g., .exe, .mpg, etc.) that may not be backed up. Thecomma-delimited list may include .mp3 or other rich media files that maynot be important enough to warrant backup.

[0140]FIG. 12—Screen Shot of a Scheduling Interface

[0141]FIG. 12 illustrates an embodiment of a screen for a schedulinginterface 1201. A time-of-day drop down list 1203 and a frequencydrop-down list 1205 may allow a time and frequency to be scheduled. Anadded time in the time-of-day drop down list 1203 may be added orremoved. In one embodiment, a “weekly” frequency schedule may also beentered. For example, if “6 am, weekly” is entered into the “weekly”frequency, the backup may be taken once a week at 6 am. Frequent backupsmay cause increased network activity. However, in one embodiment, if adelta method of backup is used, only files changed from the last backupmay be archived and sent. In addition, in environments where files arenot changing very frequently, very frequent snapshots may not be needed.

[0142]FIG. 13—Screen Shot of an Information Recovery View

[0143]FIG. 13 illustrates an embodiment of an information recovery view1301. In the example shown, three archives, each representing a file orset of files in a backup, may be listed in archive contents listings1303, 1305, and 1307, along with sizes 1308, names 1304, and time ofeach archive 1306. In one embodiment, a “View Contents” button 1309,1313, and 1315 may be placed next to each entry. The “View Contents”button 1309, 1313, and 1315 may be clicked to view contents of eacharchive. A next button may control sequential restoration. For example,each archive may represent changes between two points in time (e.g., anarchive created at 12 p.m. may represent changes that occurred to filesbetween the time of a last backup at 10 p.m. and 12 p.m.). The backupsmay be used to restore a computer blade to the last archived state ofthe computer blade, or the backups may be used for controlled rollbacksto earlier versions. The backups may be used for controlled rollbacks ifaddition of some information to the backup resulted in the corruption ofimportant files or documents.

[0144] In one embodiment, when the “Recover Sequentially to thisarchive” button 1317, 1319, and 1321 is clicked for a particular archivein a backup, the button may cause a restoration of each archive up toand including the selected archive. For example, if archives A, B, C, D,E, and F, are displayed (not shown), clicking on archive D may result inA, B, C and D being restored to a replacement computer blade. However,if there are additional archives, E and F, they will not be restored.The administrator may return to this view and choose further restorationfor E, or both E and F. In addition, in one embodiment, the restorationto a replacement computer blade may be non-destructive. In other words,though the restoration may overwrite existing files when their namesclash with files present in a restored archive, the restoration may notdelete files that do not exist at all in the restored archives. Forexample, if files X, Y and Z are present in a next archive to restore toa replacement computer blade in a sequential restoration, and prior torestoring the next archive, older versions of X and Y, and a completelydifferent file, W, have already been copied over to the replacementcomputer blade from previous archives, the restore process may overwritefiles X and Y with archived versions of X and Y, may create a new fileZ, and may not alter file W.

[0145] In one embodiment, when the “Recover Sequentially to thisarchive” button 1317, 1319, and 1321 is clicked for a particular archivein a backup, the button may cause a restoration of each archive up toand including the selected archive. For example, if archives A, B, C, D,E, and F, are displayed (not shown), clicking on archive D may result inA, B, C and D being restored to a replacement computer blade. However,if there are additional archives, E and F, they will not be restored.The administrator may return to this view and choose further restorationfor E, or both E and F. In addition, in one embodiment, the restorationto a replacement computer blade may be non-destructive. In other words,though the restoration may overwrite existing files when their namesclash with files present in a restored archive, the restoration may notdelete files that do not exist at all in the restored archives. Forexample, if files X, Y and Z are present in a next archive to restore toa replacement computer blade in a sequential restoration, and prior torestoring the next archive, older versions of X and Y, and a completelydifferent file, W, have already been copied over to the replacementcomputer blade from previous archives, the restore process may overwritefiles X and Y with archived versions of X and Y, may create a new fileZ, and may not alter file W.

[0146] In one embodiment using VNAS, files may be replicated throughoutthe network at various storage devices that participate in the VNAScluster. If one of the underlying VNAS storage devices fails, anyrequests for data on the failed device may be redirected to afunctioning machine having a copy of the requested data. Thisredirection may be handled in a way that is transparent to the user.Thus, the information recovery view 1301 may be little-used in manycircumstances where VNAS is utilized and the replication factor issufficient to provide adequate copies of data.

[0147]FIG. 14—Screen Shot of an Archive View Screen

[0148]FIG. 14 illustrates an embodiment of an archive view screen 1401.In one embodiment, each file 1403, each file size 1405, and each file'sdate of creation 1407 may be listed. Checkboxes, such as checkbox 1409,may be selected for partial restoration of an archive. Corrupted oraccidentally deleted information from backups may be selected andrestored.

[0149]FIG. 15—Memory Stack For a Computer Blade

[0150] Referring to FIG. 15, an embodiment of a memory stack for acomputer blade storing information from other computer blades is shown.In one embodiment, the user's computer blade, e.g., computer blade 403,and two additional computer blades, e.g., computer blades 401 and 405,may each use memory space on the hard drive 208 in the user's computerblade 403. In the embodiment shown, the memory spaces used by the bladesinclude memory spaces 1503, 1505, and 1507, although in otherembodiments, other memory spaces may be defined and used. In addition,as FIG. 15 indicates, there may be additional memory space 1509available for use by a virtual network attached storage (VNAS) system1509. In one embodiment, a storage network with a storage area networkserver may be coupled to the computer blade 401 and 405. The storagenetwork server may make the storage medium of computer blade 401accessible by the processor of the computer blade 405, and to make thestorage medium of the computer blade 405 accessible by the processor ofthe computer blade 401. In one embodiment, the organization andmanipulation of the user's computer blade memory space may be such thatthe blade memory space does not have a single point of failure, asdescribed below in detail. By eliminating single points of failure, thecomputer blades 401, 403, and 405 together may be more reliable for usein such applications as e-commerce, trading floors, and repair callcenters, among others.

[0151] In one embodiment, each computer blade 401, 403, and 405 may havesome file server functionality. The file server functionality mayinclude some I/O capabilities, and may also include functionality fornegotiating file write and read protocols. Communicating with thecomputer memory on the computer blades 401, 403, and 405 may beanalogous to communicating with a standard file server attached memory.The computer blades 401, 403, and 405 may negotiate information writessimilar to a file server, and order and prioritize transactions. In oneembodiment, the computer blades 401, 403, and 405 may also implementstriping analogous to one used by RAID (Redundant Array of InexpensiveDisks).

[0152] A fail-forward hard drive may also utilize NAS/SAN techniques. Inone embodiment, the computer blades 401, 403, and 405 may operate as adistributed NAS server. For example, in one embodiment, the computerblades 401, 403, and 405 may utilize unused memory space in a manneranalogous to that used by NAS and SAN, and may also track the locationof hardware and information in the system. In one embodiment, a virtualNAS (VNAS) system may be implemented where the NAS server software isdistributed across the peer computer blades 401, 403, and 405 (and/orother computer blades) in the network, thereby eliminating the NASserver as a point of failure. In one embodiment, each of the computerblades 401, 403, and 405 may maintain a copy of the NAS server software.In one embodiment, the computer blades 401, 403, and 405 may store theNAS server software and may be able to transfer a copy of the softwareto one of the remainder of the computer blades 401, 403, and 405 in theevent of a failure of a computer blade 401, 403, or 405. As mentionedabove, the computer blades 401, 403, and 405 may also use computerblades 401, 403, and 405 (i.e., each other) for other software storage,as desired. The VNAS system is described further with respect to FIGS.24 and 25.

[0153] As described in detail above, when a hard drive or computer bladefail-over condition occurs, failure management software may execute torebuild the hard drive contents on a replacement hard drive, and replacethe failed computer blade in the network with a replacement computerblade. In one embodiment, the failure management software may routeinformation reads and information writes from and to the failed harddrive to the replacement computer blade such that the user may not beaware of a failure. In one embodiment, the failure management softwaremay execute on a central management server, optionally with a backupserver in case of failure, although this approach may still presentcritical points of failure. In one embodiment, the failure managementsoftware may be distributed over the computer blades 401, 403, and 405,such that the entire storage management system is distributed, i.e.,decentralized to eliminate single points of failure. Thus, in thisembodiment, the computer blades 401, 403, and 405 may not need a centralserver. In one embodiment, the systems and methods described herein maybe used to augment an existing NAS and SAN distributed hard drivesystem.

[0154] In one embodiment, the VNAS system may implement an algorithm fora data fail-over system. The VNAS system may be operable to couplecomputer blades 401, 403, and 405 to the VNAS system, and to configure aresource manager. The computer blades 401, 403, and 405 may also becoupled to an enterprise network. The resource manager may be operableto manage the VNAS system, including information writing and stripingprotocols. In one embodiment, the resource manager may be located on oneof the computer blades 401, 403, and 405 coupled to the VNAS system. Inanother embodiment, a copy of the resource manager may operate on eachof the computer blades. In yet another embodiment, the resource managermay be distributed across the plurality of the computer blades, e.g.,computer blades 401, 403, and 405. The information and otherconfiguration information may be saved across computer blades 401, 403,and 405 in the VNAS system by the resource manager. Each computer blade401, 403, and 405 coupled to the VNAS system may be involved in storingthe information for the other computer blades 401, 403, and 405. TheVNAS system may check if the computer blades 401, 403, and 405 in theVNAS system are functioning properly, and if the VNAS system determinesthat one of the computer blades 401, 403, or 405 has failed, may providea replacement computer blade 501, as described above. The vitalinformation on the failed computer blade 401, 403, and 405 may have beendistributed across the computer blades 401, 403, and 405 in the VNASsystem prior to the fail-over condition. The VNAS system may thus accessthe computer blades 401, 403, and 405 in the VNAS system to retrieve thevital information for the replacement computer blade 501. In oneembodiment, by the use of resource managers, the computer blades 401,403, and 405 may schedule efficient information storage amongthemselves, e.g., over respective others of the computer blades 401,403, and 405.

[0155]FIG. 16—Memory Stack With a PC Region and a Server Region

[0156] Referring to FIG. 16, an embodiment of a memory stack for acomputer blade partitioned into a PC region 1611 and a Server region1613 is shown. As mentioned above, in one embodiment, each computerblade 1601 may have some server functionality. The server functionalitymay include some I/O functionality and the ability to negotiate filewrite and read rules, as mentioned above. The computer blade 1601 maynegotiate writes similar to a file server, and order and prioritizetransactions. The computer blade 1601 may also be coupled to anenterprise network 1609 and a VSAN network 1607. Thus, in oneembodiment, server functionality for the system may effectively bedistributed over the plurality of computer blades, thereby removing anysingle points of failure associated with the user of a central server.

[0157]FIG. 17—Enterprise Switch and Storage Network Switch

[0158] Referring to FIG. 17, an embodiment of an enterprise networkswitch 1709 and a storage network switch 1707 controlling attached PCs1701, 1703, and 1705, which in one embodiment, may be computer blades.As is well known in the art, a Network Attached Storage (NAS) device maybe a group of hard disk drives that connect to a network, such as butnot limited to an Ethernet. The NAS device may function like a server toimplement file sharing. The NAS may allow more hard disk storage spaceto be added to the network without shutting down attached servers formaintenance and upgrades. As is also well known, a Storage Area Network(SAN) may be a network of shared storage devices. The SAN may make thestorage devices coupled to the SAN available to servers coupled to theSAN. As more storage devices are added to the SAN, the additionalstorage devices may be accessible from any server in the SAN.

[0159] The NAS or the SAN may consist of multiple hard disks in a boxwith a system to serve the information out onto the network. The NAS orthe SAN may use a central or limited distribution control and managementnode, e.g., a server, to keep track of file locations and to distributefiles for storage.

[0160] In one embodiment of the invention, the computer blades 1701,1703, 1705 may function as the server to form a VNAS environment 1711.The computer blades 1701, 1703, and 1705 may negotiate file write rules,file reads, and order and prioritize transactions. Storage mediums onthe computer blades 1701, 1703, and 1705 may function as a standardserver attached memory.

[0161] In one embodiment, the computer blades 1701, 1703, and 1705 mayhave an internal index of files in the form of a location file stored onother computer blades 1701, 1703, and 1705. The location file mayindicate where information from various computer blades have been storedon other computer blades. The computer blades 1701, 1703, and 1705 mayalso store striping and write rules. Each file stored in the VNAS 1711may have different striping rules that may be determined by the natureof the file and the expectations of a system administrator. The VNAS1711 may use a transponder Routing Information Protocol (RIP) todisseminate files on the computer blades 1701, 1703, and 1705. The RIPmay be a protocol defined by RFC 4038 that specifies how routersexchange routing table information, although other protocols may also bewithin the scope of the invention. Using the RIP, computer blades 1701,1703, and 1705 may periodically exchange entire routing tables. The RIPmay broadcast the name, index, and rules for a memory domain of thecomputer blades 1701, 1703, and 1705, where, for example, the broadcastsmay occur in response to a change in the index, or to a lapse of aspecified time period. To improve network performance, the files may bemoved to reorganize the storage space or moved based on the frequency ofuse. For example, if the file is heavily used it may be moved to a“closer” computer blade in which there are fewer intervening switches,e.g., Ethernet links, between the file and a user of the file. Finally,the computer blades 1701, 1703, and 1705 may be operable to query anindex for a specific (instant) update.

[0162] In one embodiment, if a computer blade, e.g., computer blade1701, is seeking a file, the computer blade 1701 may search the computerblade's internal index. The computer blade 1701 may also send a query toanother computer blade, e.g., computer blade 1703, that may be listed asa primary source of the file in the internal index. The computer blade1701 may then access the file. If multiple computer blades attempt toaccess the file at the same time, the computer blade with the file maynegotiate a multiple transaction session. After the computer blade 1701accesses the file, the computer blade 1703 with the file may perform abackup according to read/write rules stored on the VNAS.

[0163] In one embodiment, the resource manager may function both as ananalyzer and a controller when accessing the entire VNAS system 1711. Asan analyzer, the resource manager may utilize information about theperformance and use patterns of the entire VNAS system 1711. Based onthe performance and use patterns, the resource manager may computedemand and usage metrics or issues (e.g., processor time, memory usageand demand, hard drive memory, and network information) as well asgenerate reports on the applications and links used. These patterns maybe used to generate a map of the demands on the system's collectiveresources over time. The continually updated map may be used by thesystem administrator and/or the resource manager in order to performpredictive and proactive scheduling of resources to users. Other uses ofthe map may also be within the scope of the invention.

[0164] In one embodiment, in case of a first computer hard drivefailure, the user of the first computer may not notice any downtime. Inother words, as noted above, the fail-over process may be transparent tothe user. The hard drives on the second and third computers may be thestorage medium for the user through the VNAS so that a replacementprocessor only has to access the already copied information from theuser's computer. In addition, the failed hard drive on the user'scomputer may be replaced with a new hard drive. In one embodiment, thenew hard drive may be brought into the computer system, i.e., the user'scomputer, independently and without intervention of the user.

[0165] In one embodiment, when the participating computers in a VNAScluster are NAS servers, VNAS allows new storage capacity, in the formof a new NAS server to be added, or existing capacity to be removed,without affecting the uptime of the VNAS volume. In this, VNAS runningon NAS servers provides SAN level capabilities in the area of zerodowntime while adding or removing storage, without any hardwaremodifications to existing NAS products.

[0166] In one embodiment, the computer blades may be additionallycoupled to an external RAID system. The coupling to an external RAIDsystem may give the computer blades more redundancy and reliability. Inaddition, the computer blades may also be coupled to separate NAS andSAN storage networks. A distributed VNAS storage management system mayminimize or eliminate points of failure in the networked distributedcomputer system. At least a portion of the VNAS server software and thefailure management software may be distributed over the computers in thenetwork, reducing or removing central servers as a point of failure. Inone embodiment, the distributed computer system may include a pluralityof centrally located computers with respective human interfaces locatedremotely from the computers.

[0167] FIGS. 18-21—Move Manager Embodiments

[0168] In one embodiment, a move manager may provide the ability toundertake individual, workgroup, or department-level hardware moves.Move manager may be used when a fail-over condition is detected on acomputer blade to restore the computer blade to a replacement computerblade. Move manager may also migrate an operating system, applications,and information from a user's old computer blade to a new computer bladewithout detecting a fail-over condition. In one embodiment, move managermay provide the ability to schedule moves to prevent network saturationduring peak work hours. A scriptable interface may allow anadministrator to control a move process and insert custom tasks oractivities they would like to execute prior to initiating the moveprocess, or upon the completion of a move. The move manager may alsoallow a system administrator to use a scriptable interface to add customtasks to a move process. In various embodiments, the move process mayinclude one or more of a one-to-one move, a cascading move, and a swapmove, as discussed below.

[0169]FIG. 18—A One-To-One Move

[0170]FIG. 18 illustrates a one-to-one move, according to twoembodiments. In one embodiment, a single user of an existing computer,e.g., an old computer blade 1801, may be moved to new computer blade1805. In another embodiment, a user of a legacy Whitebox PC 1803 may bemoved or switched to new computer blade 1807. For example, the user maybe moved for a hardware upgrade or unreliable performance of existinghardware. User preferences (such as desktop settings and icons) may becombined with other information and transferred over a network to thenew computer blades 1805 and 1807 as a series of backup files (e.g.,collected in archives or as “snapshots”). The backup files may becompressed packages for network transmission. In addition, a deltabackup method, as discussed above, may be used.

[0171] Thus, in one embodiment, a first computer may be switched to thesecond computer in a one to one move by copying at least a portion ofthe information from the first computer to the second computer andswitching the first peripheral device over to the second computer usingthe peripheral switch.

[0172]FIG. 19—Cascading Move

[0173] In one embodiment, a cascade move may be performed. For example,if a new powerful computer is added to the network, multiple users maybe upgraded to computers more powerful than their currently assignedmachines, e.g., based on computation needs, seniority, etc., where, forexample, user A gets moved to the new computer, user B gets moved touser A's old computer, user C gets moved to user B's old computer, andso on. Thus, in this approach, the information from the first computer(user B's old computer) may be copied to the second computer (user A'sold computer) while the information from the second computer (user A'sold computer) is copied onto a third computer (the new computer). Aperipheral switch may switch the first peripheral (i.e., user B's humaninterface) over to the second computer and may switch the secondperipheral (i.e., user A's human interface) over to the third computer.Other switches may also be within the scope of the invention. Forexample, in one embodiment, a single peripheral switch may provideswitching for all of the human interfaces. Alternatively, there may be aperipheral switch per computer or human interface. In yet anotherembodiment, the system may include a peripheral switch for each of anumber of subsets of the computers/human interfaces.

[0174]FIG. 19 illustrates an embodiment of a cascading move where pairsof old computers are upgraded, possibly in parallel. In the embodimentshown, upon the arrival of a new set of computer blades 1905 and 1911,old computer blades 1903 and 1909, may be moved to new computer blades1905 and 1911, respectively. Computers older than old computer blades1903 and 1909, such as computer blade 1901 and legacy Whitebox PC 1907,may be moved onto the old computer blades 1903 and 1909, respectively.Other computers may also be within the scope of the invention.

[0175] Thus, for each upgrade path or series shown, a cascading move maybe managed between a first computer, a second computer, and a thirdcomputer. In one embodiment, a copy of at least a portion of theinformation from the first computer may be copied onto the storagemedium of the second computer. Information from the second computer maybe copied onto a third computer. The peripheral switch may route signalsfrom the first peripheral device to the second computer and from thesecond peripheral device to the third computer. Of course, in otherembodiments, a cascading move may be performed for more than threecomputers.

[0176]FIG. 20—Swap Move

[0177] In one embodiment, a fail-over condition may include anindication of a need to swap the first computer with the secondcomputer, e.g., to improve performance for a user, or to changeenvironments (e.g., from Microsoft Windows to Apple MacOS). For example,if the second computer is a higher performing computer, and the user ofthe first computer needs more computational power than the user of thesecond computer, the computers assigned to each user may be swapped. Inother words, the first computer (or another computer) may copy theinformation from the first computer over to the second computer, and thesecond computer (or another computer) may copy the information from thesecond computer onto the first computer. Similarly, a peripheral switchmay swap the human interfaces for the respective computers, e.g., byrouting signals from a first peripheral device (originally routed to thefirst computer) to the second computer, and from a second peripheraldevice (originally routed to the second computer) to the first computer.

[0178]FIG. 20 illustrates a swap move, according to one embodiment. Asmentioned above, a swap move may be used to equalize or adjust the useof resources in a network (e.g., to put more demanding users with fastercomputer blades). The computer blades may be switched by two users, suchas computer blades 2001 and 2003. Information, such as, but not limitedto, applications and settings from one computer blade 2001, may bepresent on another computer blade 2003, post move, and vice-versa. Inone embodiment, information from one of the computer blades 2005 and2007 performing a switch, may be stored in a temporary third location topreserve the target computer blade 2007 while the switching computerblade 2005 overwrites the target computer blade's information. Forexample, an intermediate image server 2009 (based on PXE technology) maybe used. Large-scale moves may also be within the scope of theinvention. In moving multiple computer blades, moves may be scheduledfor Operating System settings, profiles, applications, and userinformation from old computer blades to new computer blades.

[0179] In one embodiment of a swap move, at least a portion of theinformation from the storage medium of the first computer may be storedonto the storage medium of second computer, and at least a portion ofthe information from the storage medium of the second computer may bestored onto the storage medium of said first computer. The peripheralswitch may switch the signal routing from the first peripheral device tothe first computer to route to the second computer and the signalrouting from the second peripheral device to the second computer toroute to the first computer.

[0180]FIG. 21—Flowchart of a Move Process

[0181]FIG. 21 flowcharts an initiation and process of a single computermove, according to one embodiment. It should be noted that in variousembodiments of the method described below, one or more of the stepsdescribed may be performed concurrently, in a different order thanshown, or may be omitted entirely. Other additional steps may also beperformed as desired.

[0182] As FIG. 21 shows, in 2101, a move may be initiated, e.g., by asystem administrator, or programmatically, i.e., automatically. Forexample, the move may be initiated as a result of one or more operationrules, or the system administrator may initiate the move from a movemanager web console or other user interface.

[0183] In 2103, source and target computer blades may be tagged. Inother words, one or more source/target pairs may be specified whereinformation from each source computer is to be moved to the respectivetarget computer, and/or one or more respective peripheral devices are tobe switched from each source computer to the respective target computer.

[0184] In 2105, a move may be scheduled. Depending on the number ofmachines being moved, a schedule may be set to activate an image/backupprocess and move process at night to avoid any network saturation orother inconveniences during the work day.

[0185] Finally, in 2107, the scheduled move may be performed. In otherwords, at least a portion of the information from the source computermay be moved to the target computer, and any peripheral devicescomprised in the human interface for the source computer may be switchedto the target computer.

[0186] It is noted that any of the various moves described above (e.g.,single computer switch, computer swap, and cascading move) may follow asimilar process.

[0187]FIGS. 22 and 23—Distributed Computing Infrastructure

[0188] Drawing on the strengths of the blade-based hardware architectureshown in FIGS. 1 through 3, intelligent reconfiguration may be conductedfor an enterprise-wide computing resources based on observed usagetrends for individual computer blades. Often, in large companies, thelatest and most powerful hardware is assigned to the newest employeesimply as a function of the employee and the hardware arriving atroughly the same time. This may result in a disparate and inequitableassignment of resources across the enterprise. An engineer or developerwith greater resource requirements could find himself equipped with anold machine, whereas a casual or non-power user could be using a morecapable machine.

[0189] The hardware platform shown in FIGS. 1 through 3, due to itsdense configuration and increased manageability, may provide a highlyeffective clustering solution. In one embodiment, a DistributedComputing Infrastructure (DCI) adds to these underlying capabilities byproviding a software platform for creating, running, and managingdistributed applications.

[0190] In one embodiment, the DCI software solution includes a frameworkthat provides a variety of management and deployment functions forcreating and running large-scale distributed applications. In oneembodiment, DCI may be implemented using a Java-based framework. Theinfrastructure is not dependent on the presence of a server andtherefore eliminates a single-point bottleneck that often slowsperformance of distributed applications. The DCI solution is primarilydesigned to make it easy for domain specialists (biologists,mathematicians, etc.) to re-leverage existing code modules, scripts, andapplications and adapt them to make use of the immense power of clustersolutions.

[0191] In one embodiment, DCI may include socket-level communicationsservices provided through a multi-threaded server. In one embodiment,DCI may include embedded support for HTTP communications providedthrough a multi-threaded server. In one embodiment, DCI may includeembedded support for free-form XML communications provided through amulti-threaded server. In one embodiment, DCI may include SOAP protocolsupport.

[0192] In one embodiment, DCI may include meta-data (XML) routing ofmessages in peer-to-peer fashion, with time-to-live (TTL) based expiry.In one embodiment, DCI may include automated routing of incoming XMLmessages through to application tier with support for auto-invocation ofrecipient application based on message-type. In one embodiment, DCI mayinclude directory functionality to allow applications to convenientlymonitor online and connected peer nodes.

[0193] In one embodiment, DCI may include an ability to embed existingapplications as Peer-to-Peer services without modifying them in sourceor binary form. In one embodiment, DCI may include use of XML to supportcross-language bridging (language to language subroutine invocation)without modifying called pre-compiled application or scripts. In oneembodiment, DCI may include a virtual file system to allow connectedpeers to share exposed files and folders under a navigable andstructured file system. In one embodiment, DCI may include a distributedshell that exposes the underlying virtual file system in a command lineenvironment, and also provides the ability to view, manage, and executedistributed applications.

[0194] In one embodiment, DCI may include application programminginterface (API) support for unicast, multicast, and broadcast messaging.In one embodiment, DCI may include automated application updatecapability to obtain, install, or update new distributed applicationsusing a network such as the Internet. In one embodiment, DCI may includegraphical interface and desktop management functionality, to exposeapplication interface in a consistent fashion to the end user. In oneembodiment, DCI may include auto-discovery capability to rapidly searchhundreds of entries in a network address space to locate machines(nodes) running DCI. In one embodiment, DCI may include cross-platformdeployment capabilities including a Java-based infrastructure supportedon a large number of platforms.

[0195] DCI may provide a windowed, graphical interface that can helpvisualize computational results or monitor progress of multiple jobs ina single environment. In one embodiment, applications may make use ofthe built in communications, directory, and XML routing capabilities ofthe underlying infrastructure. These applications would ordinarily belarge and complex and would have to either utilize cryptic APIs such asMPI or contain implementations of sophisticated message passing andcommunications technology. In one embodiment, DCI eliminates most ofthis development and management overhead and provides a simple andconsistent environment to develop, deploy, and manage distributed orcluster capable applications.

[0196]FIG. 22 is a block diagram illustrating a DCI architectureaccording to one embodiment. Each of two or more computer blades 101 (Aand B, in this example) runs an operating system (OS) 2302. In oneembodiment, the OS 2302 handles basic tasks like networking over TCP/IP.Each DCI-enabled computer system on the network 115 may include a DCIstack. The DCI stack may include the core DCI framework 2304, one ormore peerlet APIs 2306, and one or more peerlets 2308.

[0197] Peerlets 2308 are applications that provide functions onDCI-enabled computers. For example, chat, whiteboard, and othercollaborative applications may be implemented as peerlets that can takeadvantage of DCI. In some cases, peerlets can implement functionalitythemselves. Peerlets may also be “shells” that are used to invokefunctionality provided by other pieces of software. Specific peerletAPIs (Application Programming Interfaces) 2306 provide an interfacebetween the core DCI framework 2304 and specific peerlets. In oneembodiment, peerlets are not network-aware but rather pass requests fornetwork activity to the DCI framework 2304.

[0198] DCI may enable applications that were not originally designed fordistributed computing to be executed in a distributed manner. Forexample, DCI may utilize an existing web browser without new integrationcode in the following manner. A user may request the retrieval of a webpage from a remote web server (e.g., a news story from a news website),the combination of that web page with locally generated data (e.g.,editorial comments from the user on the news story), and the storage ofthe combination on a database server. Using DCI, the user computer A mayunicast a message to a web browser program on computer B to retrieve theweb page. The output may be returned to computer A. Computer A may thencombine the news story with the editorial comments in an XML message.This message may then be unicast to a command-line database program oncomputer C for storage in a database.

[0199] In one embodiment, DCI uses peer-to-peer message passing with nointermediary server. FIG. 23 is a flowchart illustrating a method forDCI message-passing according to one embodiment. In 2401, a peerlet oncomputer A generates a message to be sent to computer B. For example, auser may instruct a chat peerlet on computer A to request a chat sessionwith a user on computer B or send a chat message in an ongoing, activechat session to a user on computer B. Generally, messages may includetext and/or other data and metadata as well as requests to invoke thefunctionality of an application on another DCI-enabled computer.

[0200] In 2403, the DCI framework may transform the message to an XML(eXtensible Markup Language) format. The XML message may include the“payload” (i.e., the actual message to be delivered to the user oncomputer B) as well as a plurality of metadata elements. The metadataelements may include, for example, the type of application that send themessage, the GUID (globally unique ID) of the instance of theapplication, and the sender.

[0201] In 2405, the DCI framework may log the XML message. In oneembodiment, all tasks that have been reduced to XML messages may belogged to a message queue in archivable form. The XML messages in thequeue may be sorted by application type, sender, receiver, etc.Activities may be replayed through the use of the logged XML messages.

[0202] In 2407, the XML message may be sent over the network fromcomputer A to computer B. The XML metadata may include a TTL valueindicating the total number of allowable “hops” before the message isconsidered undeliverable. This value is decremented with each networkhop; when the value reaches zero, DCI may consider the message to beexpired. To prevent denial-of-service attacks, a value in excess of amaximum value (e.g., 9) may be reset to that maximum value.

[0203] In 2409, a DCI “listener” in the core DCI framework on computer Bmay receive the XML message. In one embodiment, the DCI listener mayutilize a UDP server to listen for incoming packets over an IP-basednetwork connection. The use of UDP rather than TCP may allow for therapid shipment of packets without the overhead of TCP. The UDP servermay be multi-threaded for increased scalability and improved responsetime. In one embodiment, the actual communication between DCI-enabledcomputers may use a more reliable mechanism such as TCP.

[0204] In 2411, DCI may process the message, for example, to deliver itspayload and/or invoke the requested functionality. In one embodiment,the DCI framework 2304B may determine the type of application that sentthe incoming message using the XML metadata. If there is no applicationcurrently executing on computer B that can receive the message, the DCIframework 2304B may invoke an instance of the relevant application(e.g., a peerlet 2308B) on computer B. In one embodiment, DCI 2304B mayqueue the incoming message until the relevant application has startedup. DCI 2304B may then transmit the queued message to the application.

[0205]FIGS. 24 and 25—Virtual Storage Using Excess Distributed StorageCapacity

[0206] As discussed above, a Virtual Network Attached Storage (VNAS)system may be used to aggregate storage capacity from a number of bladesand re-expose the aggregated storage to the network as one or morevirtual volumes. VNAS may therefore allow the construction of secure andscalable storage solutions. Not only may the mean time between failures(MTBF) for the overall solution be extended as a result of replication,but the ability to stripe data across drives may also result inincreased speed of access. With storage pooling under VNAS, unusednetwork storage capacity may be salvaged, treated as a single volume,and provided to network-connected workstations. Instead of being boundby the relatively high access times of a single drive, the VNAS solutioncan stripe a single file across multiple physical drives residing inmultiple blades, thus enabling parallel access for a single file-levelobject, and thus reducing overall access times.

[0207] In one embodiment, the VNAS architecture is based on a collectionof “store nodes” which may include ordinary desktops or workstations.The store nodes contribute their excess disk capacity to the VNASvolume. Mount points, including computers such as desktop PCs, may allowa user to point to a single hostname (from a list of several) to “mount”and view the VNAS volume. In one embodiment, VNAS supportsindustry-standard protocols (e.g., DAV) which negate the need for anyspecial software to be installed on a typical PC desktop in order forthe user to browse the VNAS volume. There may be several mount points ona VNAS network, thereby eliminating a single point of failure.

[0208] In addition to their contribution to the reliability of VNAS,mount points may also act as local caches. For example, if a user in onedepartment requests a document that is stored on store nodes physicallylocated three switches away, that access may result in a copy of thedocument being cached on the closest mount point cache. This“auto-caching” capability may result in frequently accessed data beingreplicated at local points of presence, therefore minimizing the load onstore nodes, minimizing network traffic, and reducing latencies ofaccess resulting from multiple switch traversals.

[0209] In one embodiment, pooled storage under VNAS may be exposed tothe end-user as a simple folder, directory, volume, or other unit ofstorage. Users may interact with the VNAS folder (e.g., to drag and dropfiles) just like they would interact with a regular folder

[0210] In one embodiment, VNAS may be managed through a web-browserinterface or other graphical user interface. Examples of browser-basedinterface screens are shown in FIGS. 9 through 14. Management of VNASmay include storage usage policies, file finding, node maintenance, noderemoval, and virtual volume maintenance.

[0211]FIG. 24 illustrates a VNAS architecture according to oneembodiment. On a blade 101A, the DCI framework 2304A discussed withreference to FIGS. 23 and 24 may run on top of an operating system2302A. VNAS 2320 may utilize the distributed computing infrastructurefor communication with other blades. As a result of leveraging the DCIframework (including functions such as peer-to-peer message passing),custom VNAS software need not be present on clients in one embodiment,In one embodiment, VNAS uses industry-standard communications protocols2322 such as DAV and HTTP to enable load balancing and scalability.

[0212]FIG. 25 is a flowchart illustrating a method for using VNAS toassist in data restoration, according to one embodiment. In 2600, thevirtual network attached storage system may be configured for use. Asdiscussed above, this configuration may include coupling the computersto the VNAS system and/or configuring a resource manager.

[0213] In 2602, the resource manager may manage the VNAS system,including write and striping rules. The resource manager may be locatedon one or more of the computers coupled to the VNAS system.

[0214] In 2604, the data and other configuration may be saved across oneor more computers in the VNAS system according to the rules set up bythe resource manager. Each one of the plurality of computers coupled tothe VNAS system may be involved in storing the data for the othercomputers.

[0215] In 2606, the VNAS system may check if all of the computerscomprised in the VNAS system are functioning properly.

[0216] In 2608, the VNAS system may determine one or more failedcomputers as well as one or more replacement computers. The vital dataon the one or more failed computers is distributed across one or morecomputers comprised in the VNAS system.

[0217] In 2610, the VNAS system may access the one or more computerscomprised in the VNAS system in order to retrieve the vital data for theone or more replacement computers.

[0218] Multiple Collaborative Sessions

[0219] With DCI in place, networked blades are capable of XML messageexchange between distributed applications and application instances.This capability is leveraged by to provide one-to-one and one-to-manycollaboration capabilities. In one embodiment, DCI enables multipleconcurrent conversations for collaborative applications such as chat andwhiteboard applications. Every time a new instance of an applicationstarts up, DCI assigns that instance a GUID (globally unique ID).

[0220] For example, consider a chat session among users on computers A,B, and C. If user A starts up a new instance of a chat peerlet and sendsa message intended for user B only, then DCI on computer B would start anew instance of the chat peerlet for receiving the message. The chatsession among users A, B, and C would remain active but would besupplemented by another chat session between users A and B (usingdifferent instances of the chat peerlet). In this way, DCI can maintainsecurity and other contextual boundaries between users on DCI-enabledcomputers.

[0221] Creating Complex Distributed Applications Using Existing Software

[0222] One of the areas in which DCI particularly assists users anddomain experts that wish to develop and deploy computationally complexapplications is application development through modular composition.This capability allows existing modules, command line programs, perlscripts, or other implementations to be seamlessly tied together,coupled with a graphical interface, and almost instantly transformedinto a cluster capable application.

[0223]FIG. 26 is a screenshot that demonstrates the simple manner inwhich commands can be broadcasted to every node (Blade or PC) runningthe DCI platform. The dialog box on the upper right hand side allowscommands and arguments to be entered, while the simple results screen onthe left shows the output of the command as received from a particularnode. With functionality of this sort, management tasks such asdistributed process listing across multiple operating systems, processdeletion, or invocation, may be easy to implement and use.

[0224] Autonomous Intelligent Management System

[0225] In one embodiment, the Autonomous Intelligent Management System(AIMS) includes a collection of agents, applications, and tools built ontop of the Distributed Computing Infrastructure. AIMS may augment thecapabilities of human IT resources and enable IT managers to easilymanage much larger numbers of systems than would otherwise be possible.AIMS may use existing (i.e., logged) XML messages to “play back” taskson DCI-enabled computers. AIMS may also use new (i.e., synthetic) XMLmessages to invoke functionality on DCI-enabled computers.

[0226] Remote Management and Security Auditing may allow customers tosign up for remotely administered system configuration checks, securityaudits, license compliance, and similar administrative functions. Theservice may provide IT executives with reports of the exact status ofeach of their Blades, regardless of physical location. Anenterprise-level report could include information on cluster of Bladesin multiple geographical locations.

[0227] AIMS may also be used to enhance enterprise security. Ongoingmonitoring for infection may include the ability to scan all files ondisk, probe incoming emails and scan outgoing emails to ensure thatTrojan horses or virus code is not being transported. Compliance withcorporate security guidelines may allow system administrators to ensurethat any one of thousands of enterprise desktops is compliant withsecurity policies. When machines are newly delivered to employees, theyare typically compliant to policies that may dictate installation of acertain version of a program because other versions may containbackdoors or exploitable loopholes. As the employee's usage of a PCprogresses, new programs and files are routinely installed andde-installed. As a result, the workstations in a typical largeenterprise do not comply with security guidelines within a matter ofweeks after initial deployment. Because it is often difficult tomanually visit each workstation and ensure compliance, AIMS may allowadministrators to centrally monitor compliance and run security-orientedqueries.

[0228] Patch deployment under AIMS may allow system administrators toremotely copy new patches and execute them remotely to modify existingprograms that may have been outdated due to the discovery of securityholes. Feature activation/deactivation under AIMS may allow fine-grainedcontrol over services such as web servers, database servers, or anyother program that monitors incoming connections and thus may be proneto remote hacking. Service deactivation may allow system administratorsto temporarily prevent remote entry while applying patches or takingother precautions.

[0229] Installation and package management may allow utilities andapplications to be copied remotely, installed, and deployed on corporateworkstations. This will negate the need for IT staff to physically visitdesktops and install applications in that cumbersome manner.

[0230] Driver version management may allow administrators to query allsystems for their installed drivers and driver versions. Mismatches, orversion numbers not in compliance with manufacturer or enterpriseguidelines will be tagged. Hardware or peripheral issues related tonon-functioning drivers, or bad driver versions will be diagnosed andfixed remotely. This functionality will allow both individual machinelevel diagnostics and queries across the corporate network to ensurelarge-scale compliance with predefined guidelines.

[0231] Patch deployment may allow OS and Application-related patches andfixes to be copied and installed remotely. Disk De-fragmentation mayallow administrators to remotely, at will, or according to a predefinedschedule, conduct hard drive de-fragmentation operations. This willensure that the performance of workstations does not degrade over timeand that users of workstations do not have to worry about conductingsuch maintenance on their own, or suffer the decreased performance dueto fragmented data.

[0232] Memory integrity tests may allow administrators to debug and fixmemory related issues with workstations. Very often, unpredictable andrandom OS blue screening (i.e. crash) is caused by the presence offaulty or unreliable locations in memory. Writes or reads from theselocations can result in the system crashing or suddenly rebooting.Memory integrity features will allow administrators to probe such issuesremotely.

[0233] AIMS may also support performance and usage monitoring. SyslogQueries may enable the OS (e.g., Windows) system logs to be queriedremotely. Currently, Windows 2k does not provide capabilities where alllogs of an entire network can be managed centrally, as each machinemaintains its own logs. Syslog querying will allow queries to run on allmachines on a network to monitor unique traffic, usage or performancerelated trends.

[0234] Threshold based pro-active reporting may allow administrators tospecify thresholds with respect to key system variables and attributes.Rather than a human manually monitoring these variables, AIMS maymaintain continuous background monitoring and will report thresholdviolations to an IT manager. This capability, when implemented on largenetworks, will provide a very significant advantage to IT staff in termsof timesavings and pro-active impending problem notifications.

[0235] Using emerging standards such as Voice XML, standard interactiveinterfaces may be constructed that can be uniformly interpreted and usedby any Voice XML compliant application (including browsers). Combinedwith the local application integration capabilities of DCI, Voice XMLand speech processing technology may allow applications to be controlledby repeating pre-recorded voice prompts.

[0236]FIG. 27 is a block diagram illustrating an AIMS architecture,according to one embodiment. Management modules 2332 may includesecurity modules, application modules, etc. These modules may be addedto the existing AIMS and DCI frameworks to suit the management needs ofindividual systems. The AIMS application 2330 and DCI framework 2304 mayrun on top of an operating system 2302 on all blades in the network.

[0237] Various embodiments may further include receiving or storinginstructions and/or information implemented in accordance with theforegoing description upon a carrier medium. Suitable carrier media mayinclude storage media or memory media such as magnetic or optical media,e.g., disk or CD-ROM, as well as transmission media or signals such aselectrical, electromagnetic, or digital signals, conveyed via acommunication medium such as a network and/or a wireless link.

[0238] Further modifications and alternative embodiments of variousaspects of the invention may be apparent to those skilled in the art inview of this description. Accordingly, this description is to beconstrued as illustrative only and is for the purpose of teaching thoseskilled in the art the general manner of carrying out the invention. Itis to be understood that the forms of the invention shown and describedherein are to be taken as the presently preferred embodiments. Elementsand materials may be substituted for those illustrated and describedherein, parts and processes may be reversed, and certain features of theinvention may be utilized independently, all as would be apparent to oneskilled in the art after having the benefit of this description of theinvention. Changes may be made in the elements described herein withoutdeparting from the spirit and scope of the invention as described in thefollowing claims.

What is claimed is:
 1. A method comprising: receiving software at one ormore remote computer systems; and receiving instructions for installingthe software at the one or more remote computer systems, wherein theinstructions for installing the software comprise one or more messagesin a portable format; translating the instructions for installing thesoftware from the portable format to an executable format at each of theone or more remote computer systems, thereby generating executableinstructions; and executing the executable instructions to install thesoftware at each of the one or more remote computer systems.
 2. Themethod of claim 1, wherein the instructions are sent and received usingpeer-to-peer message passing between a first computer system, the one ormore remote computer systems, and optionally one or more intermediarycomputer systems.
 3. The method of claim 1, wherein the software is sentand received using peer-to-peer message passing between a first computersystem, the one or more remote computer systems, and optionally one ormore intermediary computer systems.
 4. The method of claim 1, furthercomprising: receiving user input to record the instructions forinstalling the software.
 5. The method of claim 4, wherein the userinput comprises instructions to send the software to an additionalremote computer system and install the software on the additional remotecomputer system.
 6. The method of claim 1, further comprising: receivinguser input to select the one or more remote computer systems from aplurality of available computer systems.
 7. The method of claim 1,wherein the portable format comprises XML, and wherein the messagescomprise XML messages.
 8. The method of claim 1, wherein theinstructions are received through a distributed computinginfrastructure.
 9. A carrier medium comprising program instructions,wherein the program instructions are computer-executable to implement:receiving software at one or more remote computer systems; and receivinginstructions for installing the software at the one or more remotecomputer systems, wherein the instructions for installing the softwarecomprise one or more messages in a portable format; translating theinstructions for installing the software from the portable format to anexecutable format at each of the one or more remote computer systems,thereby generating executable instructions; and executing the executableinstructions to install the software at each of the one or more remotecomputer systems.
 10. The carrier medium of claim 9, wherein theinstructions are sent and received using peer-to-peer message passingbetween a first computer system, the one or more remote computersystems, and optionally one or more intermediary computer systems. 11.The carrier medium of claim 9, wherein the software is sent and receivedusing peer-to-peer message passing between a first computer system, theone or more remote computer systems, and optionally one or moreintermediary computer systems.
 12. The carrier medium of claim 9,wherein the program instructions are further computer-executable toimplement: receiving user input to record the instructions forinstalling the software.
 13. The carrier medium of claim 12, wherein theuser input comprises instructions to send the software to an additionalremote computer system and install the software on the additional remotecomputer system.
 14. The carrier medium of claim 9, wherein the programinstructions are further computer-executable to implement: receivinguser input to select the one or more remote computer systems from aplurality of available computer systems.
 15. The carrier medium of claim9, wherein the portable format comprises XML, and wherein the messagescomprise XML messages.
 16. The carrier medium of claim 9, wherein theinstructions are received through a distributed computinginfrastructure.
 17. A system comprising: a first computer systemcomprising a first CPU and a first memory; and one or more remotecomputer systems, each comprising a respective remote CPU and arespective remote memory; wherein the first computer system and the oneor more remote computer systems are communicatively coupled via anetwork; wherein the first memory stores program instructions which areexecutable by the first CPU to: send software to the one or more remotecomputer systems; and send instructions for installing the software tothe one or more remote computer systems, wherein the instructions forinstalling the software comprise one or more messages in a portableformat; wherein the remote memories store program instructions which areexecutable by the respective remote CPUs to: receive the software; andreceive the instructions for installing the software; translate theinstructions for installing the software from the portable format to anexecutable format at each of the one or more remote computer systems,thereby generating executable instructions; and execute the executableinstructions to install the software at each of the one or more remotecomputer systems.
 18. The system of claim 17, wherein the instructionsare sent and received using peer-to-peer message passing between a firstcomputer system, the one or more remote computer systems, and optionallyone or more intermediary computer systems.
 19. The system of claim 17,wherein the software is sent and received using peer-to-peer messagepassing between a first computer system, the one or more remote computersystems, and optionally one or more intermediary computer systems. 20.The system of claim 17, wherein the program instructions are furtherexecutable by the first CPU to: receive user input to record theinstructions for installing the software.
 21. The system of claim 20,wherein the user input comprises instructions to send the software to anadditional remote computer system and install the software on theadditional remote computer system.
 22. The system of claim 17, whereinthe program instructions are further executable by the first CPU to:receive user input to select the one or more remote computer systemsfrom a plurality of available computer systems.
 23. The system of claim17, wherein the portable format comprises XML, and wherein the messagescomprise XML messages.
 24. The system of claim 17, wherein theinstructions are received through a distributed computinginfrastructure.